Wednesday, December 23, 2009

Cowley - A Hudson plugin for Rational Team Concert (v.1.0.0) - Part 1 - It's Alive!

Version 1.0.0...
Over the past 9 months I've been working on my first Hudson plugin - a plugin to allow me to build my code stored in my Rational Team Concert (RTC) Source Code Management (SCM) system, all the while keeping the RTC server up to date with the builds which were running. Because RTC likes to keep up to date with CI builds, this latter piece is where the complications lie, especially because once a build is "done" I wanted some nice integration such as pushing the results back (artefacts, logs, links to the Hudson build result etc.)

Well, finally I've reached version 1.0.0. I've only put it through testing in my dev and project's CI environment but this has been enough to get it stable for us. I therefore thought this would be a good stage to let others see what I'd produced, and perhaps even get some free testing and input to boot.

Unfortunately, It's Not That Simple...
Ideally I want to be able to have the plugin available with the Hudson distro, and I've been having discussions on the Hudson newsgroups concerning this.

However, due to the fact that Cowley depends entirely on libraries in the RTC Build System Toolkit provided by IBM, the contents of which are not currently not available in any public Maven 2.0 repository, building and packaging are not so simple, and because they're not available under an open source licence. (They are however free to download from the jazz.net site.)

Bundling them as a binary plug is also currently not an option (though I'm pursuing this with IBM at the moment) as to obtain the libraries a prospective user needs to accept the IBM RTC EULA before downloading them.

So where does this leave us? Sadly, you need to get all the Cowley plugin itself and the IBM Build System Toolkit bits and package them up yourself. The hope is that this will change (especially as the REST API for RTC begins to come online from version RTC v.3.0 onwards) but until then, please accept my apologies.

So how do you do this? Well, jump to "part 2" of this series to find out.