EvilRob.org -> Weblog

Sysadmin Field Notes

Cruise control and tagging automated builds

March 22, 2004

I wonder what the best way to handle tagging builds under cruise control is. If I tag everything, then that's about 100 tags every week or two, and CVS will become unhappy and cvs log output gets way unwieldy. If I don't tag everything though, what are the other options? Every 5th build? Every other build? Just tag two regularly timed builds a day? In that case, the numbers wouldn't increment nicely, which is lame. I wonder what others do. Seems like it would be kind of an obvious question, but I can't seem to find any good suggestions.

Posted by rmeyer at 10:32 AM | TrackBack (0)
Comments
Posted by Scott Askew at March 22, 2004 9:00 PM

I'd write some automation scripts to drop old tags, then tag everything. Having all of the builds tagged from yesterday is useful; having all of last month's builds tagged, not so much.

One way of implementing this is to tag the last build that happens at a certain time each night (or twice a day or whatever) with something somewhat meaningful, and then delete all of the other auto-build tags after a week or so.

Posted by Rob Meyer at March 24, 2004 12:56 PM

Tagging takes a lot of work though...not a big deal on some of our smaller projects, but 10-15 minutes on some of the larger ones. So that adds significantly to the build time, and causes locking problems since tagging locks the file it's currently working on; slows down everyone's updates. And then the same thing on the removal. Seems like a lot of work if we're going to just throw them away...

How about not tagging with CC at all (we can always recreate them for sure if we had to by checking out using the timestamp)? Then just tagging the significant ones.

Maybe I need to think about the real purpose of tagging. Ideally I'd tag everything, but with CVS's limitations on it, it sure makes it tough to work out.

Posted by Scott Askew at March 24, 2004 9:09 PM

Ahhh... gotcha. The way that you're using CruiseControl is simply to reduce the time that a broken build is let out into the wild. For simple "did my change break the build" builds, you shouldn't need to tag everything. If you are planning on potentially releasing the build outside the immediate developer community, then you absolutely need to tag the build.

In summary, maybe you should tag CC builds once or twice a day and let the rest just be verification (ie. throwaway) builds.

Posted by Rob Meyer at March 26, 2004 8:11 AM

Okay, now I've got it nailed down what I want to do. I want the daily test builds to not increment or be assigned a CC label at all, just the timestamp (using an EmptyLabelIncrementer). Then nightly a "master" or "official" build will run that will tag the build with the next build number. Now if only I can figure out how to make CC do this...I'd also like any manual builds to be considered "master" builds, but I don't think cc can differentiate between the two at the moment.

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