EvilRob.org -> Weblog

Sysadmin Field Notes

Cruisecontrol is a beautiful and unique flower

June 28, 2004

My opinon of cc has been dropping steadily since I started using it heavily, first from "cool", to "It's okay", and now today all the way to "sucks". That's not really true I suppose, it's just one team's tool for continuously building, perfectly customized for their types of applications and workflows. But if you're not on that team, then you will likely suffer excrutiating pain trying to get cc to do what you want it to. Today's final straw is that the ExecutePublisher doesn't support any elements to pass command line parameters. So all it does is run a script, with no way to pass any information to that script. Which pretty much rules out using it to do something like deploy the build you just completed. There's also no way to only publish on build success, so the script would have to be smart enough to detect a failed build, which is complicated by not being able to pass any information to the script.


Near as I can tell, you'd have to build a script to get run by a cron job that knew the directory structure and enought to know if the build was sucessfull and schedule it to run periodically. Of course, avoiding crap like that is why I wanted to use CC in the first place. So the cc crowd would say "so just do the deploy from your ant script." Execpt that I don't want the build success/failure to be dependent on the deployment. So no problem, I spawn the task, don't wait for it, and set fail on error to false. But then I'm running out of the checked out directory, and the deployment script kind of depends on not having it's files to deploy removed and rebuilt out from under it.


Where I want to run it from is the copy I make with the artifactpublisher. But there doesn't seem to be a way to that. It doesn't even look like there are parameters to pass to a Publisher to create a patch that will allow passing parameters, without major changes (or ugly hacks). There might be, but it would involve a bunch of JDOM reading of the xml log file, which I'd hate to have to learn for this one simple thing.


And I'm only finding this out after weeks of screwing with cruisecontrol, having to create 4 seperate cc projects for each of my logical projects (1 ci build, 1 master build to do a tag, and then 1 each of those for the branch). Oh, and cc having a major bug in cvs branch modification detections that they haven't bothered to do a release yet to fix.


Anyway, it doesn't really suck, it's just a giant PITA. I had hoped to avoid the pain in the ass-ness of home rolled cron builders and deployers, but at this point I'm thinking about going back to them.

Posted by rmeyer at 9:36 AM | TrackBack (0)

This is Rob Meyer's weblog, a weblog focused on software development and system administration based on 10 years of experience. Want to explore further? You can find out more me or see the rest of my website.

Wondering if I've written on something in particular? Try searching:

You might want to take a look at some of the more requested postings (as judged by incoming traffic):

Want more? Subscribe to this site or contact me at rob at big dis dot com.

See my writings on:


Powered by Movable Type | Technorati Profile