CruiseControl is a tool for implementing Continuous Integration. It helps manage the builds for your projects. You can schedule the builds based on time or on any modification made to the repository storing your project. Beyond controlling the builds, it also provides a reporting dashboard for monitoring the status of your projects.
So, the workflow goes like this. You make some modification to the code base and check it into the repository. After a few minutes of waiting (a cup of coffee or tea), a mail notification will be sent to you telling you whether or not your modification caused any problem to the code base. If no problem, well, you can be relaxed and either go home or get another work item. If there’s a problem, you can quickly check the build log included in the mail to see what was the cause. After you fix the problem, you can sit back and wait for the email notification of the result of this fix. Normally we would like to set the waiting time to be within 10 minutes so we can get quick feedback. Note that there’s no manual operation on the server side in the workflow. Every thing is automated.
This is great, really great indeed!
The configuration of CruiseControl itself is through a XML file. In the file you specify the builder, the schedule, the notification, etc. Usually, we would like to put this configuration file in the repository as well. And that brings the idea of “eating your own dog food”.
A separate CruiseControl builder is set up for updating its own configuration file. Whenever I need to change any settings, I simply modify the XML file and check it in. A few minutes later, all changes to the configuration are taking effect. This is great in that I don’t need to log into the build machine. It could be done on any host as long as I or anyone else can check in the configuration file.
Everything is perfect now, except ...
The current version of CruiseControl does not support adding/removing builders on the fly. That is, if you add a new builder, you have to restart CruiseControl. Well, I admit that the needs for adding builder rarely happens.
I know version 2.2.1 has been out for quite a while. I have just installed it but had problems with it, so I go back to version 2.2. The problem relates to Subversion modification set, which always reports the last modification is 1970/xx/xx ... Not good!

