Planning/ReleaseProcess

From QEMU

QEMU Release Process

QEMU releases are periodically made from a particular branch of git://git.qemu.org/qemu.git, generally either for a new major release (e.g. QEMU v1.7.0), a release candidate for an upcoming major release (e.g. QEMU v1.7.0-rc0), or a stable/bugfix update to a previous major release (e.q. QEMU 1.7.1).

This page documents the steps that should be taken to produce these releases.

Locally check out the branch you intend to generate a release for:

 git checkout <my_branch>

Update qemu.git/VERSION to reflect the version being released. This should have a single line of the following form:

 v<major_version>.<minor_version>.<revision>[-rc<release_candidate_number>]

For example:

 v1.7.0-rc0
 v1.7.0-rc1
 v1.7.0
 v1.7.1

We will use v1.7.1 as an example for the following steps:

Commit this change to qemu.git/VERSION with a commit of the form:

 git add VERSION
 git commit -s -m "Update VERSION for v1.7.1"

Tag this commit with a tag of the following form:

 git tag v1.7.0

Push your branch to git://git.qemu.org/qemu.git (contact stefanha@redhat.com for commit access). Alternatively, have someone with commit access pull these changes from staging branch hosted elsewhere. This should take the following form:

 git push origin HEAD:<upstream_branch>

where <upsteam_branch> should be "master" for major releases or release candidates thereof, and "stable-<major>.<minor>" for a stable revision of a previous major release (note: both v1.7.1 and v1.7.2 release branches would get push to "stable-1.7" branch, for instance). In this case, since we're doing a major release in this example (v1.7.0), we'd update the upstream master branch:

 git push origin HEAD:master

Push your tag to git://git.qemu.org/qemu.git (see above for notes regarding commit access)

 git push origin v1.7.0

With the code/changes committed/tagged in the official repository, we can now generate the release. A script is provided to handle generating the tarball, simply run:

 make qemu-1.7.0.tar.bz2

This should work for any version string that matches the forms noted earlier (with the leading "v" omitted)

Some sanity-checking should be performed on the tarball in case there is an issue with the tarball script

Sign the resulting tarball with GPG:

   gpg -b qemu-1.7.0.tar.bz2

This will generate a signature file named qemu-1.7.0.tar.bz2.sig

Upload the tarball and signature file to shell.qemu.org

Files should be uploaded to /var/www/download.

Update/add a link to the file in git://git.qemu.org/qemu-web.git (file _data/releases.yml)

For example:

- branch: 2.9
  patch: 0-rc1
  date: "Apr 1 2017"

Create an announcement email and submit to qemu-devel@nongnu.org. Cc: qemu-stable@nongnu.org if it is a stable revision/release. See the following for an example of what this should look like:

 v1.7.0-rc2:
   http://lists.gnu.org/archive/html/qemu-devel/2013-11/msg03419.html
 v1.7.0:
   http://lists.gnu.org/archive/html/qemu-devel/2013-12/msg01770.html
 v1.7.1 (note that this gentleman forgot to include the changelog in the initial announcement):
   https://lists.gnu.org/archive/html/qemu-devel/2014-03/msg04767.html
 v1.6.2 (which includes a proper changelog):
   http://lists.gnu.org/archive/html/qemu-stable/2013-12/msg00148.html

Major releases should be submitted to lwn.net for reporting:

 v1.6.0:
   http://lwn.net/Articles/563702/