Aug 1
IBM JDK wonders
icon1 Niklas | icon2 Tags: , , . | icon4 08 1st, 2006| icon3No Comments »

Last week I had the joy of setting up our new build server at work. Since we deal with integrating with legacy applications on god-forbidden platforms, we still need to support JDK 1.3. Since some of these platforms are somewhat weird, this tends to mean IBM JDK 1.3. But we’ve been sloppy with building on this JDK for some of our projects. Now, when setting up the build server I made sure to include both IBM JDK 1.3 and 1.4 in the available options and also included them for our main projects. They all broke. Not because we were using some fancy stuff in 1.4. No, no, they broke with the wonderful error

error: The encoding null is not supported

Google to the rescue, finds this page. Turns out that this train-wreck of a JDK doesn’t support non-ASCII characters in the Java source files. Since we’re a Swedish company, quite a few people has included @author tags which contains the letters åäö. Lots of search-and-replaces later all of those has been replaced with the harmless a and o. Oh, and someone also made the mistake of including some curly quotes in a comment which had to be replaced.  That was boring, but easy. A lot of builds still wouldn’t work. That’s because some of the i18n unit tests contains strings with funky characters. Had to replace with loading that text from a file. Now everything worked as expected.

Only that some build should instead run on IBM JDK 1.4. These instead produce the equally wonderful

error: IO exception sun.io.MalformedInputException

Gee, thanks. Very helpful this time too. Google again. Found this page. This time I had to set the LANG environment variable to make the system not using UTF-8 (which Ubuntu does by default). Luckily, Pulse made this very easy.

Finally all builds worked, a few hours of massaging perfectly fine projects to build on buggy JDKs. An this was still on Linux, not one of the weird platforms. Luckily, JDKs tends to get better with each new version.

Jun 22
Pulse getting closer
icon1 Niklas | icon2 Tags: , . | icon4 06 22nd, 2006| icon3No Comments »

A few weeks ago I blogged about the newest build server in town, Pulse. All in all it looked very promising for matching our requirements for work. Two major things was missing, dependent builds and LDAP authentication. Now both seems to be implemented, I just have to wait for 1.1 being released :-)

May 29
Got Pulse?
icon1 Niklas | icon2 Tags: , . | icon4 05 29th, 2006| icon3No Comments »

Lately I’ve been testing a bunch of the continous integration servers. I’ve gone through installations of CruiseControl, Parabuild, Continuum, Anthill, Luntbuild and now, Pulse.

Pulse is, for such a new product (current version is 1.0.4) an amazing piece of software. It got a very nice, intuative interface, support for the main SCMs (CVS, SVN, Perforce), SCM or timer triggered builds, support for the main build tools (Ant, Maven, Maven2, make) as well as custom builds. It also got a clever feature where the CI build defintion is stored with the source code in the SCM.

With the requirements we have at work, there are three major features missing, remote builds, project dependencies and LDAP integration. LDAP, which is a must have for us, is scheduled for 1.1. Remote builds is currently more of the nice-to-have type of requirement but based on the DamageControl matrix it seems like it’s planned for the near future. So, that leaves project dependencies (if project X has been updated, also build project Y and Z which depends on X). Feature has been requested (requires login) so hopefully it will be coming.

Even with these shortcoming, I think that Pulse got a bright future in this competitive space. It seems that Aussie developers just can’t fail these days.