SpiderLabs Blog

Announcing ModSecurity v2.7.6 Release (CI Platform Usage)

Written by | Dec 17, 2013 6:48:00 AM

The ModSecurity Project team is pleased to announce public release version 2.7.6. Full Release Notes Here.

Besides extensive bug fixes, this release also includes modifications to the build system that counts on QA mechanisms such as coding style checker and static analysis. All ports and all platforms had some changes that may reduce the possibility of errors while trying to compile the project. Regression tests and unit tests are now more independent of platform or utility versions. Additional updates include:

  • There is a new IIS installer for MS Windows.
  • Libinjection was updated.

For further information on the changes, please check the release notes. For more information about the fixed bugs or to report a new one, have a look at our Issues on GitHub.

 

New Continuous Integration Platform (BuildBot)

The ModSecurity Project team here in SpiderLabs Research wants to ensure the quality of the project so that it will run properly within the different web servers (Apache, IIS, Nginx, and Java) and OS platforms. Testing each feature manually in all supported platforms versus all supported web servers is not feasible due to the amount of time that it will demand. This testing, however, is mandatory to ensure the quality of ModSecurity's code. In order to make the tests easy for the developers, as well as to foster transparency with the community, a continuous integration (CI) schema was deployed - http://www.modsecurity.org/developers/buildbot/

 

The CI schema is not only responsible for building ModSecurity code with different scenarios and options but also for testing it in different manners. Currently, the build slaves are responsible for executing a coding style check, basic static analysis, and in certain configurations, to perform a unit test followed by a regression test. Compilation warnings are also taken into account by the bots.

The utility selected to support the continuous integration was Buildbot. It's a handy utility with very good possibilities of customization, such as, integration with Github. Currently, we are maintaining a server with the Buildmaster, and 10 different build options that are performed on 4 different machines. In the near future, we want to have more platforms as long as more build combinations to cover the maximum possibilities.

For each new branch or updated branch that is received on ModSecurity's git repository, the Buildmaster is alerted by Github and sends the requests to the Buildslaves. The Buildslaves process the instructions sent by the Buildmaster and return information to fill the Buildmaster waterfall with numbers. The following graphic shows when a particular commit failed regression testing.

Having this CI capability to automatically test out contributed code from GitHub PULL requests is crucial for working with the community. If you are interested in helping with the project but don't know where to start - consider helping to create regression tests! Currently, not all functionality is covered, but we are expanding the regression tests to be more robust for version 2.8.