Choosing a CI

June 28th, 2007 by Hen

This, I suspect, will take a while. I need to choose a CI system to use and the list to choose from is large. It’s for open source, so commercial products that give open source projects a free license are in the list. However I do feel that if one of the open source versions can do the job, the commercial ones should not be chosen.

I have some experience with CI - I’ve written my own in Perl (hey, it wasn’t that bad!), used Continuum 1.0.x and used CruiseControl. I quite like the latter, but I want something a bit more visual and as most of the projects being built will be Maven2 based, I want it to be easy to do Maven2 while also still allowing
a C++Make project to build (for example). I doubt the latter will be an issue, but there might be good Maven2 support in a CI. One feature I lust after is being able to choose the JVM to use when building, so that’ll be a big plus.

Here’s the list, with my thoughts and assumptions on their website - I’m sure much of that will be wrong. I’ll followup with more in-depth thoughts as I dig in.

  • TeamCity
  • Pulse
  • ParaBuild
  • Hudson
  • CruiseControl
  • Continuum 1.1
  • Bamboo
  • Anthill Pro

TeamCity is found at http://www.jetbrains.com/teamcity/. The first feature they push is their “unique delayed commit” feature. It doesn’t seem very interesting to me, and as it blahs about IDEs, my assumption is that it won’t be much use to me in ‘vi’ and ’svn’. Next they talk about their “innovative Build Grid”, but that’s not a feature I need - this is a one machine gig. The third feature is that they do “code quality analysis”. Again, not a feature I want - developers can do this themselves. All in all, TeamCity seems to be well named - good features for a team.

Pulse is found at http://zutubi.com/products/pulse/. Lots of build types supported, multiple machines (don’t care), personal builds (hmmm.. much like TeamCity’s unique delayed commit ;) ), extract information using regexps (they know how to sell to me it seems), scheduling, reporting, graphs, blah blah but sounds good. I must admit, I tried a few of these a couple of months back and Pulse was at the top of the list, so expect to see more on that as I dig into the ones I hadn’t looked at then.

ParaBuild is found at http://www.viewtier.com/products/parabuild/. I hadn’t even put it in my list as I thought it was commercial only, but a link on Google AdWords to ‘viewtier’ when searching for Pulse made me check their site and lo and behold, they offer licenses to open source projects. Of course, they say ‘High visibility open source projects’, so I doubt I’d qualify :). Still… features. Firstly… their favicon.ico is a bright cyan square. Not a good sign of quality eh? It’s a surprise that arguably the big name in the field have such a basic site. I know it doesn’t mean much, but it’s also worrying to see the site’s copyright as 2006. The first feature to jump out is, oddly enough, Fisheye integration. That’s a plus as I’ve decided to run Fisheye. They provide a simple list of features - the usual suspects - but I’m left feeling that there’s not a lot of information on the site. Generally my experience here is that ParaBuild is in the ’second division’ so to speak along with TeamCity for my investigation. Harsh, but with so many to choose from it’s often the little things. Google did find a hosted version for open source projects, which helps me get a feel for things. I feel an urge to find a nice machine and set it up building Commons Lang under all of these tools. The ParaBuild dashboard is bizarre. Lots of green boxes! Woo! And?

Hudson is to be found at https://hudson.dev.java.net/. It’s the first open source project in our list, and has a nice site over at java.net. It seems to mostly just be the work of Kohsuke Kawaguchi, so one part of evaluating it will be to check the svn to see if anyone helps. DamageControl was a promising one a while back with a single developer that seemed to lose momentum. It has a JIRA plugin, but sadly it’s not a JIRA plugin as I would expect. My JIRA plugin would be such that when a build fails, it opens a JIRA issue. The Hudson one is such that users can go from a JIRA issue to the first build that contained that issue. Bit worrying in that that seems to imply that it keeps lots of builds around. Disk space ain’t free yet. Most of the site is hosted at http://hudson.gotdns.com, which seems to be a bad Confluence export. Doesn’t say much for java.net if people prefer to host from home. Hudson talks about plugins, which is good. I want to be able to do plugins because that makes things fun. One thing I don’t like is the ‘advantage’ of “No more “full rebuild” before a commit”. No no no no. Tools don’t exist to make sloppy developers, they exist to enhance good developers. Hudson also subscribes to the philosophy of having the CI tag the source when it builds. Ack. Basically I’m not in favour of building your development around the CI. Generally Hudson has the desired features, I just need to get over some of my grumbles above.

CruiseControl is found at http://cruisecontrol.sourceforge.net/. While I like CruiseControl because I think the polished GUI should sit on top of a solid command line CI and not be the CI; CruiseControl also lacks a polished GUI. At least I thought so. Digging around their site, I find the Dashboard which seems to be just what I’d want. So CC has leapt from second division up to the first division of contenders. One of the things I liked with CC was setting up templates so a project could be added in a line of xml. A big question will be how well that links with the Dashboard which appears to have an Add Project feature.

Next up, Continuum 1.1. We’ve been using Continuum 1.0.2 at work because it was the simplest for me to setup at the time (Hudson was new at the time, CruiseControl was quiet). However, Continuum 1.1 is still an alpha at the moment (alpha-2 was released this month), the feature list doesn’t mention plugins and Continuum 1.0.2 while easy to manage and setup, has also been a pain in the arse from time to time. So - Continuum’s off to the second tier on the investigate list.

Penultimately, Bamboo - found at http://www.atlassian.com/software/bamboo/. There’s been a lot of noise about Bamboo - and I liked it when I gave it a test run a few months back. I’m not sure how useful a lot of the features it mentions will be, but I do want to check out the JIRA integration a bit more, and because I’ve enjoyed creating JIRA plugins I’m interested in the Bamboo plugins.

Lastly, in our reverse alphabetical journey, is Anthill Pro. Geronimo use this for their TCK testing and their build guy is extremely happy with it - apparently it’s very good at doing parallel multi-machine builds. That’s not a feature for my current thinking, but as with Bamboo, I’d like to play with Anthill a bit more to see what it’s about. I think I heard that it’s a bit more of a learning curve than others, so that might stop me looking at it.

So, after all that, here’s how the next phase is looking:

Try them out tier

  • Pulse
  • Hudson
  • CruiseControl w/ Dashboard

Look into more tier

  • Bamboo
  • Anthill Pro

Not doing it for me tier

  • TeamCity
  • ParaBuild
  • Continuum

3 Responses to “Choosing a CI”

  1. Brett Porter Says:

    In case the others fall down along the way, Continuum 1.1 just added profile support (select jdk/maven installation to use for a build schedule). It is much less of a pain than continuum 1.0.x (particularly via groups and the ability to do operations in bulk), but it is also alpha.

  2. Kohsuke Kawaguchi Says:

    See http://www.ohloh.net/projects/762 for the list of other contributers to the Hudson project. Also, as for “Hudson also subscribes to the philosophy of having the CI tag the source when it builds”, I don’t think that is correct. In fact I don’t think such a feature even exists.

  3. Slava Imeshev Says:

    You may want to re-check Parabuild: http://www.viewtier.com We have updated the website just a couple days after your post and now it looks a bit prettier. And, no bright cyan favicon.icoanymore :)

    I should say that I am a bit surprised by your “there’s not a lot of information on the site” . Have you checked the feature list here: http://www.viewtier.com/products/parabuild/feature_details.htm

    As for the license for an open source project, drop me a line and we will figure something out.

    Regards,

    Slava Imeshev
    vimeshev@viewtier.com
    www.viewtier.com