SeaMonkey:Release Automation
The SeaMonkey 2 release automation process builds upon Mozilla's Mercurial-based release automation by reusing the generic buildbot factories from buildbotcustom as much as possible and subclassing it where needed.
Overview
SeaMonkey 2 release automation runs on the same buildbot master and slaves as the other SeaMonkey builds and unit tests. Currently, this affects the new Parallels-based systems that are not fully in production yet.
Final Deliverables
The most important deliverables are the packages, installers, and updates. This includes (for each locale)
- Linux tarball, Mac dmg, Windows installer (exe)
- Complete and partial MAR file
- Update snippets for test and live channels
Other, less important deliverables include:
- Source tarball
- Langpacks per platform per locale (minus en-US)
- Release branch and tags on appropriate repositories
Source packages are used by a small number of individuals and some Linux distributions to do their own builds of SeaMonkey. Release branches and tags are very important to Release Automation and also used by developers when a release must be respun.
Individual steps may have additional deliverables which only serve to feed later steps. These are discussed in the Mozilla release automation doc.
Current Status
As of June 18, 2009, the code is working for tagging, source tarball, builds, L10n repackaging, and creating partial updates as well as snippets. Verification steps haven't been tested. All the work is available in Bugzilla attachments or the bbconf-sm2 testing repository. bug 493451 is tracking the efforts to get everything into the tree(s).
Getting things going
Configuration
TBD
Starting the automation
Generally, the workflow for kicking off Release Automation is as follows:
- Update l10n-changesets (normally performed by someone from the l10n team days ahead of time)
- Update release_config.py
- Reconfigure the buildbot master
- Kick-off automation with the following command:
buildbot sendchange --username=bhearsum --master=localhost:9010 --branch=releases/mozilla-1.9.1 -m "Firefox 3.2a1build1" doit
Of course, replacing username, branch, and the message appropriately. Be sure not to leave out --branch.