Build:Release Automation:Bootstrap
Bootstrap is a simple Perl framework intended to take the formerly manual release process and automate it, with as little change to the process as possible.
The source code is in the Mozilla CVS tree.
Bootstrap is invoked using the "release" command, and supports a set of high-level "steps":
Tag - tag, branch, apply version bumps to all relevant files.
TinderConfig - generate tinderbox config files (mozconfig/tinder-config.pl)
Build - invoke Tinderbox client to create and en-US build and publish to FTP
Source - create a source tarball and push it to FTP
Repack - invoke Tinderbox client to create localized versions of en-US build and publish to FTP
PatcherConfig - create a Patcher config file for generating updates
Updates - invoke Patcher to create partial updates and AUS configuration
Stage - create a staging area and rename files for release
Sign - not implemented
Bootstrap Steps
A Bootstrap "step" must implement 2 required methods:
Execute - carry out the actual function of the step, e.g. Build
Verify - run an automated test
Additionally, there are 2 optional methods:
Push - upload the appropriate changes for testing, e.g. upload build to FTP
Announce - send an email announcing that the step has finished.
Using Bootstrap
If the "release" command is invoked with no parameters, it will attempt to start at the first step and call the methods in this order:
- Execute
- Verify
- Push
- Announce
As each step completes successfully, the next will be invoked.
There are several command-line options, shown by calling "release -h":
Usage: release [-l] [-s Step] [-o Step] [-e | -v | -p | -a] [-h] -l list all Steps -s start at Step -o only run one Step -e only run Execute -v only run Verify -p only run Push -a only run Announce -h this usage message
For example, to only run the Push method on the Build step:
./release -o Build -p