At my current place, we’ve set up TeamCity as our build server. Previously I’ve used CruiseControl.net and never really questioned it – it works, it does the job, seemed quite nice if a little fiddly to setup.
(If you’re thinking “Hang on, Team City isn't free is it?” - well there is a free version that is limited to a limited number of projects, configurations and agents – check the site for more details)
I was a bit sceptical about moving to TeamCity because I didn’t want to feel the pain of setting up yet another build/ci server and spending ages trying to get it working with our nant scripts – turns out I was so so wrong to worry. Team city is awesome! Let me talk you through some of the awesomeness…
Setting it up is a breeze
Its seriously easy to set a build configuration using TeamCity. Its all driven through the nice friendly web interface, so a real breeze to setup. Assuming you have an automated build script of some sort set up for your solution (like nant, nant, maven2, msbuild etc) then its really easy to plumb this into Team City. You can set up multiple build agents for your build really easily too.
So once you’ve got your build set up, you get all the usual stuff like a build history including things like which check-ins caused the build etc. You can drill into previous builds and see what happened – get the full build log, look at the tests, download the artefacts you defined for the build, all good stuff. You can also manually force a build. If a build fails you can set responsibility for fixing too. All of this is present in most (if not all) CI servers, but its just a lot more polished and feature-rich in Team City.
Really Awesome Test and Cover Integration
This is what got me really excited (maybe I should be worried about that). You get all sorts of great reports/graphs from Team City that are really useful – like this one:
This shows a history of a swear word test we have, and how long its been taking to run and on what build agent.
If you have test coverage set up (like PartCover) then you can also integrate that and you get some really nice reports showing your coverage by class, methods and LOC – you even get an indicator of what the check-in did to improve (or reduce) that coverage – which is an awesome motivator for adding more tests!
So, all in all, I really like TeamCity, and I’m glad to be using it. If you’re considering getting a CI server set up for your project, or you want to try another flavour of CI server, check it out!