login
Blurts on the Art of Software Development

Today | RSS | RDF | Atom | Other Tags
Categories : All | All | CI | .NET | General | Humour | Java | Personal | Reviews | Ruby | SW Eng

I just spotted the following marketing blurt through testdriven.com:

[name of a build server product] helps software organizations reduce high risks of failures of projects caused by broken code base by delivering uninterrupted daily builds.

Yes! Finally! All of our software projects will be raging successes now that we have technology that builds our software automatically!

If you didn't spot the sarcasm...

It's not the tools that make continuous integration happen. It's the people. Even the most advanced build server can't do shit if the people don't integrate their changes continuously. Even the most advanced build server can't spit out a good build if the people have screwed it up.

This is not a bash against Parabuild. It could be a terrific build server. It's just that I start hearing these voices in my head when someone even remotely suggests that there's a new tool that somehow magically fixes the stupid humans.


Every so often, I have someone telling me that setting up CruiseControl is hard. Invariably, when I probe more, it turns out that setting CruiseControl up is easy - it only takes a few minutes to turn out a config file that works. The issue is that they don't have a build script that does something useful. Parabuild suffers from the same problem - if you don't have a decent build script, you can't get decent automated builds.
Regarding CruiseControl, I have also had to tinker with Java VM and Ant parameters to get our CruiseControl build with Clover run working without running into OutOfMemoryError every now and then. Maybe I'm just incompetent, maybe our build script is also bad, maybe Ant is so year 2000, maybe Clover has had problems or a mixture of these and other factors yet unknown to me. But something has made me suspicious of these "CruiseControl up and running in five minutes" stories ;)
Lasse, Thanks for reflecting on our message :) There was no point to withdraw Parabuild's name from it because the message is true. Parabuild does roll out clean daily/nightly builds even if the head of the codeline is broken. So, yes, it tries to fix thing that people screwed. As for the rest, I totally agree that engineers need to follow simple rules to really benefit from continuous integration. Mine top ones are a) don't go home till you see your checkin has produced a clean build b) don't check in after 5PM. You may find more on avoidable build breakage patterns here: http://www.viewtier.com/support/articles/continuous_integration_build_breakage_patterns.htm Regards,
Timo, You should get CruiseControl to use your own antscript, where you set these up. I repeat: the issue is to get your ant script to do what you want, not CruiseControl. Using the antscript is the recommended approach in CruiseControl, and has been for ages.

Robert, thankyou for the clarification. However, when starting to put up the CruiseControl run, we did already have the Ant script doing what we wanted: CVS checkout, clean build with Clover instrumentation, test run with Clover, and generating the Clover reports.

The problem was that when setting CruiseControl to run this in the build loop, the build kept crashing in OutOfMemoryErrors. As I said, I don't mean to imply that this would be CruiseControl's fault; nor am I interested in finding the guilty one, but rather in getting Lahtinen and the machine gun back, as Hietanen very well puts it in a Finnish classic.

When tuning the VM and various Ant and CC parameters, I found out that we were not alone. Don't get me wrong, I think that CruiseControl is a great tool, but I like it better served with only moderate hype ;) It can easily be more work to set it up in a big project to do non-trivial things (such as the Clover runs) than what is being done in tutorials.

Timo, that's what the antscript attribute is for - you point it at a shell script (such as the one provided by Ant already) that will invoke Ant out of process, thus avoiding the out of memory errors, classpath setup issuse, and so forth. Get the shell script to invoke your ant build file correctly, point Cruise at it, and you're done. That simple.


Add a comment

Title
Body
HTML : b, i, blockquote, br, p, pre, a href="", ul, ol, li
Math Quiz 10 + 9 = (Helps stop blog spam)
Name
E-mail address
Website
Remember me Yes  No 

E-mail addresses are not publicly displayed, so please only leave your e-mail address if you would like to be notified when new comments are added to this blog entry (you can opt-out later).

TrackBack to http://radio.javaranch.com/lasse/addTrackBack.action?entry=1133900178027