I’ve been spending some time recently setting up TeamCity, the Continuous Integration server from JetBrains.
Why TeamCity and not CruiseControl.NET?
In my opinion, TeamCity is far more approachable and usable right out of the box. Configuration is through a polished web-based front end. Documentation is pretty good, but most of the time you don’t need any docs at all because the UI walks you through the process.
By way of contrast, configuration of CC.NET requires direct editing of XML configuration files - one mistake, and your entire build server is offline. Worse, documentation is sparse - and in my experience, is written as reference for the expert user, not a guide for the newbie.
Approachability of configuration is often underrated. My colleagues are happy to make use of a Continuous Integration Server, once it is set up - but they’re never going to be interested in spending a week learning how to make a minor change.
I’m willing to spend the time to get our Continuous Integration environment up and running - but if I want that environment to continue to be used when I’m not around (say, if I have a personal encounter with a very large truck…) then the system needs to be easily maintainable too.