automation, buildbot, svk

For Firefox and Thunderbird, we assign one build/release engineer per release (as part of the "release team" for that version). I've been the release engineer for 3 of the Firefox/Thunderbird 1.5.0.x cycles and 2 of the BonEcho alphas, so (I hope!) that I am starting to get the hang of it now. While we have a well-specified procedure (thanks to Paul Reed's incredible diligence) and we work hard to keep our docs up to date, one thing we've been missing is a system to automate the tagging, building, repacking, update generation, etc. process that we have to go through for every release candidate. The idea is not just to make the whole release team's lives easier, but also to make the process more reliable and transparent (the plan is to have a release automation project in the public tree, so changes need to go through the usual patch/review/commit process).

I'll be giving this project some love over the next few months, tracking it in bug 354603. Other important areas such as verification, performance testing and general infrastructure improvement have interdependencies with this work as well, and I should be able to get a better understanding of (and get some fixes in for) these areas too.

Another project I've been helping out with lately is mozilla/buildbot integration at Seneca College. Ben Hearsum (a student at Seneca) has been doing some awesome work on 1) building triggered on changes from bonsai and 2) publishing results to tinderbox server. Brian Warner (the buildbot maintainer) recently landed Ben's patches in the buildbot trunk. This means that you can build Mozilla products using the buildbot client/server setup, and still publish to and pull changes from If you want to try it out, here is the master.cfg I use on my test server, plus some mozilla-specific steps:

There is a bonsai patch in there that needs to land (to parse revisions as strings and display one revision per file) so you'll need to apply that if you want to play around with this. Hopefully everything will be landed by the next buildbot release, for the more patient :)

With TR Fullhart's recommendation and assistance, I've been using SVK to do distributed development against the buildbot CVS tree. In a nutshell, I can do a pull from buildbot CVS, and then sync that to my local repository (SVK uses a modified Subversion backend). This means that I can check my changes in as I go, and still easily merge my changes with buildbot and generate patches which apply to their CVS. It also means that I have the full project history on my laptop, which is really great when working offline.

I'd like to start working against the Mozilla CVS tree in the same way; I need to spend some time figuring out what kind of partial history pulls I can do with SVK, since it'll take hours to pull down the whole history to my laptop, and I am mostly interested in working against the trunk and a few specific branches.