Tuesday, October 02, 2007

2007-10-02 Tuesday

This week I started working on installing and configuring CruiseControl for a client development environment - when I happened to come across Hudson. Apparently a number of JBoss teams use Hudson. I downloaded and had it up and running within about 15 minutes. So far, I am very pleased with its ease of use. The web UI is simple enough that it doesn't throw too big of yet-another-learning-curve at the team.

So far I have an Ant build.xml firing every 15 minutes (if there are changes detected in the Subversion repository) for a test project. There are 11 JUnit test cases defined in the test project which are also executed. An email notification is automatically generated and sent out based on any failures - or after the 1st successful build.

A must-read is Martin Fowler's paper on Continuous Integration.

"Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly. This article is a quick overview of Continuous Integration summarizing the technique and its current usage."

Another Open Source project that is on my short-list this week: John A. Brugge's Glean

Glean is a framework of Ant scripts for generating feedback on a team's source code. Glean's goal is to make it possible to add feedback to your build cycle with as little pain as possible. The scripts drive a number of open-source tools and collect the resulting HTML for you to deploy to a project website or some other common team area. Add it at the end of a daily build cycle and it is a quick way to keep a number of feedback sources up to date and in one place.

There are any number of feedback tools that have Ant tasks, but applying them individually to your project build script usually involves copying some boilerplate Ant target from the tool's documentation and tweaking it a little for your project. Of course, even that doesn't help when you move on to the next project, other than now having a new place to copy and paste. And as you find more areas where another feedback tool would help, it adds an organizing challenge to the build script maintainer to figure out where to put the script for this new tool.

Glean is a collection of these boilerplate Ant targets, tied together with some common properties that describe your source project. The goal is to give you flexibility in a couple of different directions: to let you plug in different tools that analyze, document or measure your code, and to let you apply those tools to any source project you have.

Today I'm also trying to get Subversion's post-commit hook to fire and send out an email noification to the team - but so far, there is no joy. I have the Perl script commit-email.pl working (tested from the command-line) - but it appears as if Subversion isn't firing the post-commit event. Sometimes trying to get Open Source tools to work under Windows is a royal pain.

No comments: