Home > Build, Development, Software > Continuous Integration Server Comparison 2008

Continuous Integration Server Comparison 2008

Early last year I did a Quick Comparison of some of the popular CI servers of the time. Things have moved on since then, and I’ve actually been involved with the Cruise development team since then. Now that Cruise has been released, a number of people both inside and outside ThoughtWorks have asked me to put together a follow up article – here it is.

The list of available products out there has grown a lot in the past 18 months, and the features that they support are really great. Since I did the last review I’ve actively avoided having a look at the other tools out there to keep a clear focus on what I wanted to see in Cruise. Doing this review has been a great way for me to see what everyone else has been up to.

Just having loads of features does not automatically make for a good tool though. Instead of having a shooting match between who does what, I’ve taken a little sample Java servlet that I use for demos and tried to get it working with all the tools. This project is hosted on a local subversion repository. I’m going to try set it up to simply run unit tests and create my distributable .war file. Areas that I’m going to look at are:

  • Installation (on Linux, OSX and Windows)
  • Setting up my existing project
  • What did the tool inspire me to try next

Tools that I’ll be trying out are (in alphabetical order):

AntHillPro

Installers

There are no native platform installers, but you can choose from 3 packages. Each package contains both the server and the agent components.

  • Graphical Java Installer
  • Windows Command Line Installer
  • Unix Command Line Installer

Installation

I chose the Unix Command Line. Unpacked the tarball and ran the script. It’s unique in that all the script does is kick off an ant build that asks you questions and does the installation. The defaults all seemed pretty reasonable. Installing an agent is done separately and follows the same process. Once you start the processes, hit the web frontend and finish the setup.

Setting up my project

This is where things go interesting. There was no obvious “add your project here” button. A bit of clicking around, and I found something under the Admin tab that looked like a good place to start. Then it asked me if I want a Life-Cycle based project or a Non Life-Cycle based one? What’s a Life-Cycle in this context? I fuddled around and took random guesses, and then figured out that I needed to add a workflow to my project to actually do anything. Fair enough, only I was half way through configuring my new workflow when it asked for my repository, but only gave me a dropdown list to choose from. Back out, into the admin page, find out where to add new repositories, add a Subversion one. Once again try to finish configuring my new project (at least it remembered where I was), but then it all fell apart when trying to add the repository to the workflow. Kept on throwing up “AttributeMissingException: project is missing”. Decided that this had already taken up far too much of my time just to get to this point, and so I gave up.

Bamboo

Installers

A single installer that contains both the server and the agent.

  • Windows .exe installer
  • OSX .dmg file
  • tarball

Installation

I picked the “Linux” tarball, even though I’m testing on OSX. I prefer doing this when evaluating products as I think it gives me a better feel for what’s actually going to be installed, and I’m guaranteed I can get rid of it efficiently and easily when I’m done playing with it. Unpackd the tarball, ran the start script. All looks good, but when you try use it it asks you to edit a file in the webapp path pointing to the installation directory. Nasty. Once that’s fixed and started again, you’re asked for your license key. There’s a handy link at the bottom to go get your key, copy paste and you’re away through the rest of the wizard.

Setting up my project

Clicked the Create Plan link. Still has my pet hate of wanting you to specify UPPER CASE KEYS for everything. Are we still using ancient Big Blue iron here that has such limitations? Wants me to specify an ant target which is also a little weird – I just want the default target! Other than that all very nice. I like how it goes right into the activity page once you’ve set up your project and you can see what’s going on, including SVN checkout.

I then wanted to play with

Agents. Installed agents on Ubuntu and WinXP (server running on OSX). It’s pretty easy really. Agent matrix shows you which projects will build on which agents. Also went to look at all the pretty graphs, but I don’t have much build history right now. Bamboo has built in Clover integration, but I use cobertura in my project for coverage. It looks like they have some interesting reports around code coverage, but I can’t run them…

Cruise

Disclosure – I wrote the installers for Cruise, so obviously I like them.

Installers

Separate installers for the server and the agent components.

  • Windows .exe installer
  • OSX .app packaged in a zip
  • Linux RPM and Debian packages

Installation

This is one of the few products that does not ship a generic tarball or zip file. As I’m doing all this on a Mac, I pulled down the server and agent zip files, unpacked them, and dragged the .app’s over to my Applications folder. Double click on each and we’re up. Once the server is up it opens up the admin interface in your browser. The first thing you’re asked for is your license key.

Setting up my project

The very first thing you’re hit with (after you’ve put in your license key) is a wizard to set up your project. Follow the prompts, and fill in where your test results and artefacts are stored. It won’t let you create the project until it verifies that it can connect to your source repository, so make sure it’s up before you start.

I then wanted to play with

Pipelines. I presented one of the very first papers on Build Pipelines with Jez Humble (now product manager for Cruise) and Dan North at Agile 2006. When I first started implementing them I had to do all kinds of unholy hacks with CruiseControl, but the benefit of using CI like this was well worth the pain at the time. At the moment you have to jump into nasty XML to configure pipelines in Cruise, but the whole process should be wizarded up in the next release. Having lots of agents allows you to split up jobs in your pipeline stages quite nicely so they run in parallel and speed up your feedback loop.

The other great feature I like that product companies are always asking me about is the ability to run parallel builds for a stage on multiple platforms. Whether you’ve got a .Net app that you need to test across multiple versions of Windows, or a web app that needs to be tested from a whole matrix of different web browsers, Cruise makes it easy to run the same tests in all these different environments using the same build of your application. If the tests pass on all of them, your stage will pass, and you know that your product is playing nicely with all of them.

CruiseControl

Installers

  • Windows .exe installer
  • Generic zip file

Installation

More unzip and run script. It just comes up with the sample project.

Setting up my project

This is where the venerable Granddaddy of CI servers really started showing it’s age. I had to manually check out my project, then edit the xml config file to get it going. If I’d not been using it for almost 4 years I’d get pissed off and move along.

I then wanted to play with

Something else. If you’re using it already and it’s doing the job you want it to, then there is no real reason to change. If you’re new to CI and are looking for something easy to get you started, then I’m sad to say I suggest you look elsewhere…

Hudson

Installers

  • A single war file for everyone.

Installation

The most basic of all, just run java -jar hudson.war or drop the war file into your favourite servlet container. Makes it kinda hard to know what version you have though, and by the look if it they release new versions quite regularly.

Setting up my project

Not too bad. Pointing at unit test and artefacts was a bit weird as it starts one level higher than I expected. I liked the weather reports. Because the build was failing (because it could not publish any artefacts or find test results), it had little storm clouds. Nice.

I then wanted to play with

The plugins. There’s quite a few, and I like how you can just download them and go.

Pulse

Installers

  • Windows .exe installer
  • tarball
  • zip

Installation

Another unpack the tarball and run the start script. I see a trend here. Hit the web interface and it asks you for a data directory. Also needs a license key to get going, but has a nice link there to go get one.

Setting up my project

Nice start screen with list of things to do. Hit add project, then got confused about what the URL was it was asking for. Got a test button for your SCM – yay! Setting up the artefacts you want is easy, it all just works. Only thing I can moan about is that I can’t see what’s going on in the builds, and it feels slower than the rest for some reason.

I then wanted to play with

Personal builds! It’s not something I’ve ever played around with, but it looked kinda straight forward with pulse, and it is! Just install a little tool on your development workstation and use it to invoke a personal build. Does require a bit of extra data in the project, but it’s great.

It also has agents. I love agents. They have an interesting way of doing them though. You point the agent at the server. I suppose that’s one way of getting around the security implications of other people getting their hands on your code. Agents auto-discover what their hosts provide, and when configuring a project you get a drop down list of what’s provided already. You’ve still got the freedom to add your own stuff too.

It has stages, kinda like our build pipelines. To use them nicely though you need to start editing their XML, but they’ve got great help along the right for you to see what your options are. Their stages run in parallel, so it’s not really like our Cruise pipelines, but at least they got the parallel stuff going.

Team City

Installers

  • Windows .exe installer
  • tarball

Installation

Unpack the tarball, find and run the start script.

Setting up my project

Hit the Create Project button. Interesting that you create the project first, then add the config after. Test SCM button. Auto tagging and code coverage built in. Nice. Also agent based. Option to automagically run emma for you. Tried it, but because I already use cobertura it barfed. It lost my artefacts config somehow. Lots of options. Also by default does not trigger a build on check in – what’s with that?

I then wanted to play with

Integration with IntelliJ. I’m a big fan of IntelliJ and use it a lot. It makes sense in a developer centric world, because the IDE is the developers portal into the world of code. I like the way you can click on a failed test and it takes you to the test code, as well as the ability to take responsibility for fixing a broken build.

Summary

The world of CI servers has come a long way in the past 18 months. It’s certainly reinforced my belief that competition is a great driver for innovation. When I started at ThoughtWorks clients would often complain that they’d like to do Continuous Integration, but setting up a CI server was way too hard. Complexity of tool configuration is now no longer an acceptable excuse for not doing CI.

It’s also great to see the trend of agents being so popular. The days of having a big mother of a build server for a project or small group of teams is over. After one of the Cruise demos I did here in the UK our client commented that it was great that he could finally find a use for all the overpowered desktop machines their managers have – use them as build agents!

As a final note for those of you who are trying to decide on what CI server to use – remember to pick one that supports your process and what you want CI to do for you.

Categories: Build, Development, Software
  1. imeshev
    5 October 2008 at 22:19:36

    Chris,

    It looks like our Parabuild is missing from your list. It came to life after Anthill Pro and long before other commercial and free tools.

  2. Chris Read
    6 October 2008 at 13:13:16

    Greetings…

    Correct – it is missing. It’s not intentional though.

    I’ve not heard anything about it for years, and then all of a sudden you and one of the CITCON Europe attendees mention it! I’ll make sure to include it in the next round…

    Chris

  1. No trackbacks yet.

Leave a comment