I’m a wee bit obsessed with build environments, and project automation.
There are loads of sources online about this, but basically the crux is to automate, in a clean environment, compiling the code for a project and running the tests regularly. Reporting if any changes have broken the system.
Over last (almost) five years I’ve used a couple of Continuous Integration tools. CruiseControl and CruiseControl.NET. I have even had the luxury of setting up the development environment for a couple of projects so I was able to shop around, but invariably kept coming back to the excellent Thoughtworks’ products. Here’s a great matrix to help you choose a CI tool:
These basically sit and watch your source control for anyone doing a check-in / commit. As soon as this happens it triggers a “build”. We’re not bothered about the latter in the article, but it’s usually a build script which goes off to do the compile and run the tests. The CI Server will then report when it did the build and whether it worked so that the whole team can see the results.
All that really matters about the tool is that it integrates with your source control, runs your build scripts and is easy to use. The only reason you would be bothered about what it’s written in (i.e. the different flavours of CruiseControl in Java, .NET and Ruby) is whether you’ll want to make changes to the code itself.
Here’s the main advantages I’ve found that Hudson has over CruiseControl:
- UI within the web site to configure all aspects so it’s much easier to set up and maintain
- You can run the build on any machine (great if you want to kick off builds and tests in different environments i.e. Mac OS environment, Win XP, Win 7 etc)
- A plethera of plugins including CHUCK NORRIS
- It looks better
- It doesn’t just have red and green for your builds, it has a weather system! Going from sunshine (this is a stable build that rarely breaks) all the way down to a lightening storm (this build is buggered)