Jump to navigation Jump to search

QEMU Release Process

QEMU releases are periodically made from a particular branch of 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:


For example:


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:// (contact 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:// (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

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

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

For example:

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

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

 v1.7.1 (note that this gentleman forgot to include the changelog in the initial announcement):
 v1.6.2 (which includes a proper changelog):

Major releases should be submitted to for reporting: