Over the last 6 months I have tried a few CI systems for my own projects. I’ve been looking for something that will formalise the “Clean, Build, Test & Deploy” process so that it’s more predictable, repeatable and almost more importantly – recorded. Nothing major really, I’m not looking to CI to merge the output of multiple streams of development or some amazingly intricate process that itself requires pages of documentation.
I have tried CruiseControl.NET and the more recent offering from ThoughtWorks (an update to CC.NET) Cruise, however these are great systems but can be a bit of a nightmare to set-up I found, at least in light of my particular intended use.I gave up on both of these systems, I found them to be too fiddly to configure.
Anyway, my friend Lee recently got in touch with a very favourable review of JetBrains TeamCity. Since I really wanted to have a CI system in my workflow I decided to take a closer look at TeamCity.
I downloaded the TeamCity Windows installer exe and started the installation process, all seemed to be going very well. Once it had completed I was presented with the page to create an Administrators account and I was then promptly taken to the Projects page. To cut a long story short it appeared that the installation process hadn’t been entirely successful, couple that with an unfamiliar system and I was pretty confused.
There were no Build Agents installed and running on the system and no Windows Services had been installed. On top of that the ‘evaluation’ database seemed to have been installed incorrectly as it had not stored my Administration account which meant that I couldn’t log back in! So, all in all this installation was pretty broken in reality. I was a bit fed up at this point and decided to un-install the software and just get on with some development work.
Anyway, that was on Thursday … on Friday I decided to have another go, went through exactly the same process and low and behold, the installation actually seemed to work. Within about 2-3 hours I had an entire MSBuild process fully configured and running being triggered by Subversion check-ins.
My build process runs right through from cleaning the checkout location, updating the source code from Subversion, running my xUnit tests via Gallio (with reporting). All good! The only thing left to incorporate is once the Build / Test targets have completed successfully is to then run a ‘Package’ target that will produce the final installer executable. However, I may keep this as a separate project, not sure yet.
The upshot is that I can highly recommended TeamCity. Considering all my attempts at getting CI systems working TeamCity is certainly the easiest to get up and running with, I use CC.NET and Cruise at work so it will be interesting to see how they compare once I’ve had a bit more time with TeamCity.
I’m now a student of MSBuild, any good links appreciated!!