Thursday, March 26, 2009

Found some time

I finally found some time to get back to doing some open source development. A user found an issue with the Hudson release plugin. I am thinking that the plugin was coded in a way that was too dependent on the internals of Hudson and a Hudson upgrade broke the plugin functionality. I refactored the code to leverage some new Hudson features and release 1.1 of the plugin that includes a fix for this as well as integrating with Hudson security.

Wednesday, February 18, 2009

Update on PMD project configurator

No thanks to the followers of this blog... as if there are any... but I was able to overcome the classpath issue that had stumped me for a few days.

It turns out that if an eclipse plugin wraps a jar library, it can not deploy as an uber-jar if you want other plugins to be able to access classes within the wrapped jar library. The plugin must be deployed as an exploded directory (at least on Eclipse 3.3 & 3.4). This is quite odd and non-intuitive, but that's the way it is.

If anyone knows another way around this, please comment.

Wednesday, February 11, 2009

Hudson release plugin got some comments

A couple Hudson users have commented on the newly available release plugin. So far, the feedback is positive and they have a couple ideas for some improvements. I'm planning on giving these a shot very soon and keep my users happy. :-)

m2eclipse project configurator for PMD

I am a big Maven 2 believer and have found the m2eclipse plugin from Sonatype to be a very impressive piece of code. One of its many nice design points is the ability to contribute configurators that can configure an eclipse project based on the maven project model. I have been working with the PMD maintainer to create one for the PMD plugin.

Unfortunately, we have hit a bit of a snag. I only have some pretty basic experience developing eclipse plugins and it seems like we've hit a bug.

The PMD eclipse plugin has been built in such a way that it wraps a number of jars internally. In the manifest.mf file it exposes the packages necessary to integrate with it but I still get compilation errors within Eclipse when trying to access those packages.

Interestingly, if I import the source of the PMD eclipse plugin into my eclipse workspace, it is able to resolve the imports no problem - and successfully launch eclipse with the plugin. So far, Google hasn't given me any answers on this one so I need to do some digging.

Any thoughts, please send them over.

Tuesday, February 10, 2009

Hudson release plugin

Hudson is an awesome continuous integration server that really excels in ease of use, aesthetics and extensibility. At work, we have set this up to constantly build and report on our source code. This is the standard use case for any CI server.

But, CI doesn't complete the development lifecycle. The next step after CI, is to cut a release build that can be deployed into your test and production environments. The usual difference between a CI build and a release build is reproducibility and naming (giving a meaningful version to the build).

Our build tool of choice, Maven, has a command line release capability, but once you have been using Hudson, you really want to leave the command line behind. In order to take advantage of your Hudson project configuration at release time, I created a Hudson release plugin that performs the additional release steps that a usual CI build doesn't do.

This plugin has worked successfully for 6 months or so for us and I was hoping that the rest of the community could leverage this as well.