Release:Release Automation on Mercurial:Overview
Notes and Definitions
- 'Staging server' typically means stage.mozilla.org for production (read: real) releases and staging-stage.build.mozilla.org for staging (read: test) releases.
- 'Candidates directory' refers to the directory on the staging server which builds are deposited into. It almost always resolves to /home/ftp/pub/$product/nightly/$version-candidates/build$buildNumber - resolve the variables appropriately. For example: /home/ftp/pub/firefox/nightly/3.1b3-candidates/build1.
- Unless otherwise specified any references to directories on the staging server should be taken as relative to the candidates directory.
Code Overview
Mercurial Release Automation is a collection of Buildbot BuildFactory's which perform most of the tasks which are done as part of a release.
Code is stored in a few different places:
- BuildFactory's - buildbotcustom
- Configuration files - buildbot-configs
- Helper scripts - build/tools
- CVS
- Mozharness - build/mozharness
Of particular note is process/release.py, which instantiates all of the Schedulers, Builders, ChangeSources, and Status modules that releases use.
All steps are affected or fed in some way by the configuration files, but not all of them use code from the other locations. The subsequent sections contain links to the code that each step relies on.
Final Deliverables
The most important deliverables are the packages, installers, and updates. This includes (for each locale)
- Desktop (Firefox)
- Linux/Linux64 tarball, Mac dmg, Windows installer (exe)
- Complete and partial updates for all desktop builds/locales
- Update metadata for test and live channels
- Mobile (Fennec)
- Mobile packages: Android APK, Maemo5-gtk DEB
- Mobile desktop: Linux tarball, Mac dmg, Windows installer (exe)
All of the above are handed off to and tested by QA during the release process.
Other, less important deliverables include:
- Source tarball and bundle for desktop (Firefox) and mobile (Fennec)
- Langpacks per platform per locale for desktop (Firefox) and mobile desktop platforms
- Release branch and tags on appropriate repositories
- Checksums for released files
Source packages are used by a small number of individuals and some Linux distributions to do their own builds of Firefox. 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 will be discussed in the sections below.