18 November 2007

Breaking Continuous Integration Servers (Part 2)

I wrote a few posts ago about how easily continuous integration servers break. This post got quite a bit of response!

Jon from Atlassian felt bad for the ordeal and sent over a couple of "I'M WELL BUILT" t-shirts. Thanks Jon! Owen over at Unreasonable Entertainment ran an initial version of the "hell build" maven plugin idea from my post against Hudson with less than stellar results. Damn!

Owen and I were discussing the results when I found a post from Donnie Pinkston on using premain to write a Java agent. While his post is about a code profiler, the idea is perfect for a VM monitor, taking performance information exposed via JMX, wiring up monitors and a custom MBean to kill the build.

I guess all the ingredients are there, it's only a matter of time for someone to cook them all together. Since switching from Ant to Maven, my releases have gone from 6 minutes to 133 minutes, so maybe I'll put that time to good use...

2 comments:

Owen Jacobson said...

Since switching from ant to maven, your build also runs every reporting plugin under the sun. When we did $UNSPEAKABLE with ours, it came back to a sane amount of time. Still higher than ant overall, but not hours higher.

The hellbuild stuff was a ton of fun to write. It's completely freehand—how do you unit-test something that's supposed to fail in the most destructive way it can? The same problem you've applied to build servers applies in miniature to unit tests.

idcmp said...

Hey Owen,

On my system $UNSPEAKABLE resolves to nothing. Can I do nothing to cut my build times down?

I don't think unit tests do a good job at testing code which doesn't have strong business logic in it, so I'd forgo turning your simple code inside out to just wrap it in unit tests. (Time to put my flamesuit on..)