Besides extensive bug fixes this release also includes modification on 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 utilities versions. Additional updates include:
- There is a new IIS installer for MS Windows.
- Libinjection was updated.
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 to test 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. Compilations warnings are also taken into acount 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 in 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 branch updated 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, it but we are expanding the regression tests to be more robust for vesion 2.8.