During our phase to installing the SCRUM develop I read the book “Scrum – Agiles Projektmanagement erfolgreich einsetzen by Roman Picher” and there was recommended to use a Continuous Integration (CI) system. The reasons stated there persuaded me at once that we need such a system. So I started to looking for such a thing.
The very first system I set up was CruiseControl, because an other department in the company already used CruiseControl .Net. The setup of the server was pretty easy. But I did not like the way of configuring the jobs. Too many settings had to be done in an “XML grave”.
So I took a look onto the commercial Cruise by Thoughtworks. The setup was easy and support by the help desk was great during our evaluation phase. But still it was necessary to configure the job details with XML files. It may be that this has changed with a later revision.
I think XML is a good way of defining settings or transferring data – for machines. But I don’t think for humans.
I liked very much the pipeline concept that Cruise has implemented! But I did not had at that a budget of about 7000€ for buying such a license. So I found a great comparison list.
Only one system which offered all features that I would like to have: Hudson CI. The installation was as easy as it was for all the other systems. But there was no need to configure anything within an XML file. Everything could be set via a web interface. Great! Everything was translated to German. Wow. (Even I prefer today the English layout, because this eases the possibility to search for solutions of problems in the net.)
I liked as well the plugin system. There are so many contributions for so different aspects that it was hard at the beginning to find a functionality that was not available, even we are not doing Java or .Net. (Just for remembering, we are doing everything in C++ together with Qt under Windows.)
After a very short testing phase with only a few users we changed our development process and since nearly a year we are using Hudson/Jenkins CI successfully.
At the end some facts: We are running the CI system on Windows Server 2003 SP2 on a Dell 2900 server with 4GB RAM. We have configured about 30 jobs and four Hudson/Jenkins client nodes are attached for testing, building and deploying. Building is done with Visual Studio 2005 SP 1 or 2008 SP1 and IncrediBuild as distributed build system. In the sum we have 35 build clients which allow us to build our complete software from a clean base within 42 minutes. And since two weeks ago we installed a big screen in our office as information radiator.
In my next post I will focus on some details of how we setup our jobs:
- Why we changed from Batch files to Ant scripts
- How we use the Java Cobertura plugin together with C++ code to measure the code coverage of our unit tests
- How we integrate our CI system with our test management system SpiraTest