I attended CITCON this weekend - it was great! Jeffrey Fredrick and Paul Julius ran this free-to-attend open space conference through their "Open Information Foundation". If you are interested in continuous integration and testing then this is the conference to go to.
Amongst other things, the conference really inspired me to think that there are lots of possibilities for continuous integration that no-one has yet tried. Mike Cannon-Brookes of Atlassian has some really interesting ideas that are being worked on for bamboo.
Recently, I've replaced CruiseControl with build-o-matic at my client, because CruiseControl was turning out to be difficult to configure and run reliably, taking a lot of effort and not giving great feedback. I wrote build-o-matic with my colleagues initially just for simplicity - but it is turning out to work better for us than CruiseControl, as well as being simpler.
For one thing, as soon as it detects updates, it shows you the change sets before it starts running the build rather than waiting until it's finished - so you know what it's working on. Also, it shows the tail of the build output in it's web page so you can see what it's doing - one of the problems we had been having with CruiseControl was telling what it was doing.
The feature in build-o-matic that has probably had the biggest benefit for the least effort has been putting images of the people who have committed changes on the web page, by scraping names out of commit messages.
I feel bad about criticising CruiseControl, because I've been using it for many years and it was the first CI server - a really great idea for a tool. Unfortunately, it does have some problems, and build-o-matic solves the ones that were most important to me.
One of the features of a CI server that I'd really like would be for it to automatically find out what broke the build. When working in a large team with people checking in frequently, you can end up with multiple commits while the build is running, so on the next run of the build, if the build breaks it can be difficult to tell what caused the breakage. Today I've implemented the first version of an enhancement to build-o-matic - currently called "blame-o-matic.py" in the CVS repository for build-o-matic and not in a release yet. It runs (for subversion only) the build for all revisions of the repository between the current revision (svnversion) and a given revision. There are cleverer strategies than just running on every revision - e.g. binary search - to find what commit broke the build. I'm hoping to implement this some time soon ... watch this space.
TeamCity is a really interesting alternative approach - I haven't tried it yet but I've heard a few people say good things about it.
Posted by ivan at October 8, 2006 6:12 PMInteresting what you say about CruiseControl - I agree that in this day and age the configuration system leaves a little to be desired, and the way the web app part of it works (XSLT) makes it much harder to add in web plugins.
I think the build loop itself is pretty good (very pluggable, support for lots of SCM tools) - and it is completely seperate from the web reporting application. It'd be nice to see a proper configuration management system and a new reporting application - I think it if had that it'd go back to being the best on the market.
Posted by: Sam Newman at October 8, 2006 8:32 PMCruiseControl could also do with adding dependancy information, so it knows that project a and b depends on project c, so that when project c is updated it doesn't continue to build b and c before it gets to build a again. I have 40 odd projects which takes around 3-4 hours to build the complete set. It's very annoying when you update the bottom project to have to wait 4 hours before cruisecontrol decides to build it again.
Posted by: JD at October 9, 2006 8:38 AMOops - I didn't realise that sourceforge supported subversion until Nat Pryce told me, so the files to which I refer are now in SVN rather than CVS on sourceforge - see https://svn.sourceforge.net/svnroot/build-o-matic
Posted by: ivan at October 9, 2006 9:15 PMIvan,
You might want to check our Parabuild. It's a production-grade software build management server. Parabuild doesn't have any problems you are talking about.
Regards,
Slava Imeshev
You might want to check out Kala which is a PHP version of the CruiseControl GUI - with improved usability and speed. With Kala you can easily force, pause and resume builds, view tail of the build log, view latest artifacts and more.
Check it out at:
http://www.saunalahti.fi/~jviinama/kala
I really enjoyed the conference too. Can you put some screen shots of your build with the images of the people who committed. I remember you told me you used southpark charactures.
Can you blog about how this changed the teams attitude to the build. I think it's a facinating and important discovery.
Posted by: Andy Pols at October 12, 2006 2:33 PM