Planning/ReleaseProcess

From QEMU
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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/