Planning/ReleaseProcess: Difference between revisions

From QEMU
(Change "titles" to bold text)
 
Line 5: Line 5:
This page documents the steps that should be taken to produce these releases.
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: ====
'''Locally check out the branch you intend to generate a release for:'''


   git checkout <my_branch>
   git checkout <my_branch>


==== Update qemu.git/VERSION to reflect the version being released. This should have a single line of the following form: ====
'''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>]
   v<major_version>.<minor_version>.<revision>[-rc<release_candidate_number>]
Line 22: Line 22:
We will use v1.7.1 as an example for the following steps:
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: ====
'''Commit this change to qemu.git/VERSION with a commit of the form:'''


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


==== Tag this commit with a tag of the following form: ====
'''Tag this commit with a tag of the following form:'''


   git tag v1.7.0
   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: ====
'''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>
   git push origin HEAD:<upstream_branch>
Line 39: Line 39:
   git push origin HEAD:master
   git push origin HEAD:master


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


   git push origin v1.7.0
   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: ====
'''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
   make qemu-1.7.0.tar.bz2
Line 49: Line 49:
This should work for any version string that matches the forms noted earlier (with the leading "v" omitted)
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 ====
'''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: ====
'''Sign the resulting tarball with GPG:'''


     gpg -b qemu-1.7.0.tar.bz2
     gpg -b qemu-1.7.0.tar.bz2
Line 57: Line 57:
This will generate a signature file named qemu-1.7.0.tar.bz2.sig
This will generate a signature file named qemu-1.7.0.tar.bz2.sig


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


Files should be uploaded to /var/www/download.
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) ====
'''Update/add a link to the file in git://git.qemu.org/qemu-web.git (file _data/releases.yml)'''


For example:
For example:
Line 69: Line 69:
   date: "Apr 1 2017"
   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: ====
'''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:
   v1.7.0-rc2:
Line 81: Line 81:
   
   
<!--
<!--
==== The announcement should also be posted to the QEMU Google+ page (ask Anthony/Stefan for access details): ====
'''The announcement should also be posted to the QEMU Google+ page (ask Anthony/Stefan for access details):'''
   v1.6.0:
   v1.6.0:
     https://plus.google.com/101344524535025574253/posts/9wQkMb22n6B
     https://plus.google.com/101344524535025574253/posts/9wQkMb22n6B
Line 88: Line 88:
-->
-->


==== Major releases should be submitted to lwn.net for reporting: ====
'''Major releases should be submitted to lwn.net for reporting:'''
   v1.6.0:
   v1.6.0:
     http://lwn.net/Articles/563702/
     http://lwn.net/Articles/563702/

Latest revision as of 18:57, 2 July 2025

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/