What is it?
Ship it is a system that accepts requests for releases from humans and translates them into information and requests that our Buildbot-based release automation can process. It consists of a web application/api and a backend script ("release runner") to do much of the actual work.
Source code for the web application lives on github. Release runner is part of the build/tools repository. Release promotion uses the default branch, while legacy automation (eg Thunderbird) uses the old-release-runner branch.
Where is it?
Release runner is deployed through Puppet on buildbot-master85 for release promotion, and on buildbot-master81 for legacy automation. Supervisord manages the running process.
The web application depends on many Python packages. Most are included in a vendor library in the repository. Required binary packages are noted in its requirements list.
Release runner's dependencies are described in its puppet manifests.
The dev instance of Ship It automatically pulls the tip of the master branch of the git repository - no human intervention is needed to deploy to it. Stage and production deployment are handled through Chief, which let us push explicit revisions at will:
When deploying, you should enter your own name in the first field, the deployment password in the second, and the revision you want to push in the third. If you don't have the deployment passwords, ask someone for them.
Release runner's repository needs to be updated by hand to deploy a newly checked in version. Run the following on buildbot-master85 (release promotion) or buildbot-master81 (legacy) to do so:
cd /builds/releaserunner/tools hg pull && hg up
Switch to root and run
supervisorctl restart releaserunner