Friday, July 20, 2007

Continuous integration made easy

Yesterday I found a great continuous integration server. Its called Hudson and is written in Java and can do loads of stuff with no complex setup. Right out of the box it supports Ant, Maven, Cvs, and Subversion. In 10 minutes I was up and running periodical builds of my XBMC python scripts from my Trac/Subversion site.

At my previous job at large american hand held manufacturer, they had a really nice build system that was integrated with sharepoint. With it, they could schedule builds through a web page on their separate products. I was pretty amazed by it and it seemed so complex. But now I have a tool that can do the same thing for free.

Hudson has some nice features:
  • Builds trends - How often does the build break? Does the build time increase for every build?
  • Periodical builds Or when someone commits
  • Test trends - Is the number of failed test increasing or decreasing over time? Does the test cover more and more code? (Clover plugin)
  • Emails when a build fails - An email can be sent out when someone checks in code that breaks. Apparently it can even email those responsible for breaking the build (that I havent tested yet)
  • Multiple jobs that can be shared one or several machines.
  • Shell access, you can run any batch file or shell script from the builds; so it is very easy to integrate into your current build situation
  • Plugins - To integrate with Trac and other bug reports; Jabber and IRC support, etc.
So far I have used it for a Java, a Python and a .NET project; and all that just in one day!

Take a test drive of it (check out the webstart) and you will be pleasantry surprised.