The Jenkins Continuous Integration server is a Java based application that manages builds, tests and notifications. The idea is that it monitors the version control system for new code, when it detects a new code drop, it can:
- Check it out
- Build it
- Deploy it
- Test it
- Notify stakeholders of any build/test failures
- Display the results
BDD-Security can hook into the testing and reporting phases of a Jenkins build, but there are some constraints when using it:
Firstly, it must test a live instance of the web application/web service, so the “deploy” step of the build is necessary.
Secondly, since BDD-Security relies on Burp the server hosting Jenkins needs to be able to run Burp…or needs to be able to connect to another server running Burp.
So a few questions about how to integrate TeamMentor into a Jenkins setup:
- By design, Jenkins can build software as well as test it. So if we host Jenkins on a Windows server then Jenkins could be used as a build server for TeamMentor if TeamMentor can be built using MSBuild. The process is described here. So the question is, do we want Jenkins to build TeamMentor as well as test it – or just to test it?
- If we decide to build with Jenkins, then Jenkins can build, deploy and test on the same server. But if we decide to only test using Jenkins, then BDD-Security would need a live instance of the latest running TeamMentor code to test. So when it detects a TeamMentor commit to git, which server should it test against?
- Should Jenkins also run Arvind’s Python unit tests against TeamMentor as part of the testing phase using the Tox tool?
- Where should notifications be sent to for: Build failures, Python test failures and BDD-Security test failures?
Personally, I think it would be great to take full advantage of all of the Jenkins functionality by using it to build, deploy and test on the same server- but that will involve a bit more work, firstly in getting TeamMentor to build and deploy using MSBuild and secondly in getting both Arshan’s and my tests integrated with it.