ReleaseEngineering/Applications/Ship It

From MozillaWiki
Jump to: navigation, search

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?

The web application is deployed on IT's generic web cluster. There are dev, stage, and production instances of it. More in-depth, IT-oriented, information is available on mana.

Release runner is deployed through Puppet on buildbot-master85 for release promotion, and on buildbot-master81 for legacy automation. Supervisord manages the running process.

Requirements/dependencies

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.

Deployment

Web app

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

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

releasetasks

Release runner uses releasetasks to generate the taskcluster graph, and this is also updated by hand. Run the following as cltbld@buildbot-master85:

 cd ~/releasetasks
 git pull

Using it

Standard usage of Ship It is documented as part of the full release automation documentation. Troubleshooting information is also available there.