Tags: Build, ClearCase, Continuous Integration, CruiseControl, CVS, Hudson, Subversion
After using CruiseControl for years as my favorite tool of choice to implement Continuous Integration I completely switched to Hudson. I was very happy with CruiseControl because it’s very reliable and works with pretty much every source code management tool. Even changing the existing SCM is not a big deal. The reconfiguration just takes several minutes plus a restart of the CruiseControl cron job. However, everything has to be changed in a XML configuration file making it error prone and a pain in the boat to change. Although CruiseControl comes with a web application that can be deployed to any kind of Servlet container jobs can’t be easily configured, monitoring is basic and extensibility would take a lot of effort. Version 2.7 comes with a dashboard trying to fix these shortcomings. Frankly, it doesn’t convince me as an easy-to-use user interface which would even allow beginners to Continuous Integration to get an easy access. Once you were in Hudson-land you never want to go back.
Hudson, as one of CruiseControl’s competitors, takes different a path. A web application is the basis of the Continuous Integration engine which is highly configurable, extensible through a plug-in mechanism and has a very nice layout. Jobs are completely set up through the web interface. No more hassle with XML. By default it supports CVS and Subversion. Plug-ins are available for other SCMs like e.g. ClearCase. Prominent build tools like Ant, Maven, Gant even MSBuild and NAnt can be triggered and work like a charm. Reports (most of the times even with graphical stats) for unit tests, API documentation and static code analysis tools like Checkstyle or FindBugs are accessible through for every job.
Hudson is a young project but has a very vibrant and active community. It’s mailing list is the top 1 of the java.net projects. I think multiple release per month speak for themselves. As one of the most prominent users of Hudson the JBoss projects completely switched from CruiseControl to Hudson.
Here’re some nice links if you want to go further: