This is the release procedure for the Scap software. It is meant to be followed by a member of the Release Engineering team.
This document assumes that the codebase has already undergone manual and automated testing.
Run release-scripts/perform-release
. It will:
- Ensure that your checkout is up-to-date and clean.
- Prompt you for for the new version number (with a reasonable default).
- Update scap/version.py and changelog and create a commit with those changes.
- Push the commit to Gitlab, approve it, and wait for it to merge.
- Tag and push the commit.
- Tell you how to deploy the new release.
That's it!
- Make sure you select a time window where no deployments are happening
- On the main deployment server (deployment.eqiad.wmnet at the time of writing), run
scap install-world
. This will select the latest available version tag for installation and prompt you for confirmation. - If you need to roll back, you can specify a particular version tag with e.g.
scap install-world --version 4.42.0
(For the following steps to work you must have ssh access to and sudo privileges on deployment-cumin.deployment-prep.eqiad.wmflabs and deployment-deploy03.deployment-prep. eqiad1.wikimedia.cloud)
-
Run
release-scripts/scaps-installed-in-beta
. It will print a list of the versions of Scap that are installed on beta hosts. Save this information in case a rollback is needed. Ideally there will just be one version reported but sometimes (read: frequently) situations arise on beta cluster that result in mismatches. -
Run
release-scripts/update-scap-in-beta
. This will retrieve the latest available code revision of Scap, prompt you for confirmation, and (if you answery
oryes
) install it on beta Scap hosts.
-
Run the beta-scap-sync-world Jenkins job (click "Build now") or wait for it to run automatically (runs every ten minutes)
-
If it fails (and it wasn't failing before), it's probably a new bug in scap. Revert back to the previous working version by running
release-scripts/update-scap-in-beta OLDVERSION
, replacing OLDVERSION with the version saved in earlier steps. -
Manually run a deployment from deployment-deploy03 (FIXME: This needs to be replaced by pre-release automated testing)
ssh deployment-deploy03.deployment-prep.eqiad1.wikimedia.cloud
cd /srv/deployment/integration/slave-scripts
- make a dummy change to README and commit it
- run:
scap version && dpkg -l scap
- check the version numbers are correct
- run:
scap deploy -v 'testing scap3'
- run:
scap deploy-log
- kill that with control-C if it looks good
- output from 'scap deploy' might mention a host like
deployment-mediawiki-07.deployment-prep.eqiad.wmflabs; log in
there and check that
/srv/deployment/integration/slave-scripts-cache has a current
symlinked to a refs/... directory and that
/srv/deployment/integration/slave-scripts is a symlink to the
same revs directory:
ls -l /srv/deployment/integration/slave-scripts-cache /srv/deployment/integration/slave-scripts