Tuesday 4 August 2009

Continuous Integration made easy

Today I had the opportunity to try out JetBrains continuous integration engine TeamCity 4.5.4, something I have been curious about for some time now. So I have this big project in a Perforce repository which I wanted to set up.

Getting TeamCity to run as a standalone application under Ubuntu in a VirtualBox was easy, all it needed was to have a JAVA_HOME set up before starting it up using the runAll command. Configuring was also quite straight forward and I could map up a Perforce client specification in the web application directly. The project to build uses an Ant script which also was straight forward to set up.

When I tried to build the project I thought something was wrong because it seemed to freeze when trying to sync out the repository. I soon realized that TeamCity uses the Perforce p4 command in a different way than I am used to which takes considerably longer time to sync than I am used to. Having realized that, I let it go about doing its thing and it built right away.

Well, not entirely true. However, I can not blame JetBrains for the poorly designed build scripts with environmental dependecies I fed to TeamCity. When I finally got the build script to build it worked like a charm.

I am not the kind of guy that is easily impressed by user interfaces but TeamCity really rocks. Their usage if Ajax makes the application interact in a way that almost gives the feeling of a desktop application. A soon as you have made a change in some configuration, a save button pops up at the bottom of the browser window informing you that you have unsaved changes. Another thing that really makes it rock is the feedback you get during a build. Not only can you see how long it has been working and how long it is left (estimated of course), but you can also see what it is currently doing. Apparently it parses the output from the build script and presents it in an easily digestible format so you can actually see what it is currently doing Ant target wise.

The thing that makes TeamCity especially interesting for me right now is that it doesn't only support Ant and Maven2 and whatever Java thing you want to give it. It also supports building .Net projects using the normal .Net build tools which is interesting since we have some of that as well. I haven't tried the .Net stuff though.

If you want to try it out for yourself you can download the professional version which is free and supports up to 20 user accounts. That is quite generous. For a more permanent installation, it can be deployed to an application server of your choice with a database of your choice, within reason of course.

So if you need a continuous integration engine, don't hesitate to try JetBrains TeamCity. I doubt you will be disappointed.