Hudson > (CruiseControl * 2)

CruiseControl and I have never really gotten along.  When you're a Java shop, you have to use continuous integration. In fact, if you're a code shop, you need CI. For the longest time, CruiseControl was the only kid on the block.  I'd heard about Hudson quite a bit, but I didn't take the time to try it.  Why not?  Well, because CI is hard, and it takes forever to get setup right -- I didn't want to have to re-invest all that time.  Man, if only I'd known how wrong I was.

Everyone's gripe with CruiseControl was that you had to edit XML files to make the configuration.  Well, I don't mind XML, and it's often pretty good at config files.  But CruiseControl was always quirky.  Switching from CVS to SVN?  A day's worth of work.  Adding a new build?  At least an hour or two.  Little things: CruiseControl would freak out and die if you didn't do the initial checkout from CVS/SVN - CruiseControl only does updates, not checkouts.  We often joke how the developers that write CruiseControl favorite motto was "let the sucker sysadmin deal with it".

So, I downloaded Hudson, and in less than 10 minutes I had everything that was being done in CruiseControl working in Hudson.  And, I'm being honest here, I actually smiled a few times to myself when setting it up!  It took another 20 minutes, and I have authentication working against our LDAP server, which I never had working in CruiseControl.

If you're running CruiseControl now, drop everything, do yourself a favor, and go try Hudson.  If it doesn't do what you want, it has plugins that do.  It has API's for XML, JSON, and Python, and the XML implementation has full XPATH support.  Every field in the web interface has inline help that is actually helpful.  Having different projects use different Java's and Ant's are a click away.  You can build multiple projects at once, create build dependencies, and even have distributed builds run amongst multiple machines.

Please, I'm begging you.  Give Hudson a try, and get back some of your life from CruiseControl!  If you're not running CruiseControl or Hudson, then you probably should be.

Comments

I had been tinkering around with the idea of using CI at work, from CDash, to a home grown disaster that was abandoned, and never got anything to work the way we wanted. Then about two months ago I found Hudson (I think I saw it mentioned in Netbeans and started looking into it). I pushed the war to my personal Linode, played, loved it, showed our manager, and next thing you know, its building!

As we're in the process of migrating to Subversion from CVS this week, this post is particularly timely. I've tested Hudson out after seeing your post and was really impressed. So our CruiseControl server has been replaced with Hudson at the same time, which is working very well.

The ability to create copies of existing jobs quickly is great, making it really easy for developers who are branching to create their own CI build jobs.

Thanks for the post!

One of the groups at $work uses Hudson and they seem to like it quite well. I have yet to deal with it myself. I have taken over the Bamboo cluster. Bamboo leaves some to be desired. There are things I do like, but then again there are some design decisions I think are a bit nutty.

Add new comment

Subscribe to SysAdmin's Journey RSS