Jump to: navigation, search

Difference between revisions of "ReleaseTeam/How To Release"

m (ThierryCarrez moved page Release Team/HowToRelease to Release Team/How To Release: Demoinification)
(Reformat to support TOC)
Line 1: Line 1:
__NOTOC__
 
 
Raw notes for release monkeys in case I end up under a bus.
 
Raw notes for release monkeys in case I end up under a bus.
  
 
All tools mentioned here can be grabbed from this [https://github.com/ttx/openstack-releasing github repo].
 
All tools mentioned here can be grabbed from this [https://github.com/ttx/openstack-releasing github repo].
  
= Milestone publication =
+
== Milestone publication ==
  
 
(also works for Swift interim releases)
 
(also works for Swift interim releases)
Line 15: Line 14:
 
</nowiki></pre>
 
</nowiki></pre>
  
=== Pre-flight checks ===
 
  
==== Missing files check ====
+
==== Pre-flight checks ====
 +
 
 +
'''Missing files check'''
 
<pre><nowiki>
 
<pre><nowiki>
 
./repo_tarball_diff.sh $PROJECT master
 
./repo_tarball_diff.sh $PROJECT master
 
</nowiki></pre>
 
</nowiki></pre>
  
==== Tarball/version status ====
+
 
 +
'''Tarball/version status'''
 
* Check that the $PROJECT-[branch-]tarball jenkins jobs work properly and that they produce the right version numbers
 
* Check that the $PROJECT-[branch-]tarball jenkins jobs work properly and that they produce the right version numbers
  
==== Check bugs ====
+
 
 +
'''Check bugs'''
 
* Look at the list of FixCommitted bugs, sanity-check that they were fixed during the period
 
* Look at the list of FixCommitted bugs, sanity-check that they were fixed during the period
  
==== Get PTL signoff ====
+
 
 +
'''Get PTL signoff'''
 
* For Swift, check that the $DEVVERSION changelog was committed to master
 
* For Swift, check that the $DEVVERSION changelog was committed to master
 
* For Swift, set next version on master branch, get it approved by swift-core and make sure it's merged
 
* For Swift, set next version on master branch, get it approved by swift-core and make sure it's merged
 
* Note down MP cut commit id
 
* Note down MP cut commit id
  
=== MP cut (Tuesday) ===
 
  
==== Deferring blueprints ====
+
==== MP cut (Tuesday) ====
 +
 
 +
'''Deferring blueprints'''
 
* Move all incomplete blueprints to the next milestone
 
* Move all incomplete blueprints to the next milestone
 
* Move all non-milestone-critical bugs to the next milestone
 
* Move all non-milestone-critical bugs to the next milestone
  
==== Create MP branch from previous commit ====
+
 
 +
'''Create MP branch from previous commit'''
 
* Use review.openstack.org admin panel to create branch
 
* Use review.openstack.org admin panel to create branch
 
* Branch name is "milestone-proposed", initial revision is the MP cut commit id (or HEAD)
 
* Branch name is "milestone-proposed", initial revision is the MP cut commit id (or HEAD)
  
==== Process FixCommitted bugs ====
+
 
 +
'''Process FixCommitted bugs'''
 
<pre><nowiki>
 
<pre><nowiki>
 
./process_bugs.py $PROJECT --settarget=$MILESTONE --fixrelease
 
./process_bugs.py $PROJECT --settarget=$MILESTONE --fixrelease
 
</nowiki></pre>
 
</nowiki></pre>
  
==== Wait for tarball build ====
+
 
 +
'''Wait for tarball build'''
 
* Wait for the $PROJECT-branch-tarball job run to generate a $PROJECT-milestone-proposed.tar.gz
 
* Wait for the $PROJECT-branch-tarball job run to generate a $PROJECT-milestone-proposed.tar.gz
  
==== Announce candidate builds (once all done) ====
+
 
 +
'''Announce candidate builds (once all done)'''
 
* Email to openstack general ML
 
* Email to openstack general ML
 
* Twitter
 
* Twitter
  
=== In the next days (Wednesday-Thursday) ===
 
  
==== Track milestone-critical fixes ====
+
==== In the next days (Wednesday-Thursday) ====
 +
 
 +
'''Track milestone-critical fixes'''
 
* Target milestone-critical fixes to $MILESTONE
 
* Target milestone-critical fixes to $MILESTONE
 
* Backport them to milestone-proposed (see [[GerritJenkinsGithub#Authoring_Changes_for_milestone-proposed|how to do it]])
 
* Backport them to milestone-proposed (see [[GerritJenkinsGithub#Authoring_Changes_for_milestone-proposed|how to do it]])
  
==== Get PTL signoff ====
+
 
 +
'''Get PTL signoff'''
 
* For Swift, push change to swift/__init__.py which sets FINAL=True on milestone-proposed branch
 
* For Swift, push change to swift/__init__.py which sets FINAL=True on milestone-proposed branch
 
* Note down milestone cut commit id
 
* Note down milestone cut commit id
  
=== Milestone publication (Thursday) ===
 
  
==== Push tag to MP ====
+
==== Milestone publication (Thursday) ====
 +
 
 +
'''Push tag to MP'''
 
<pre><nowiki>
 
<pre><nowiki>
 
git checkout -t -b milestone-proposed origin/milestone-proposed
 
git checkout -t -b milestone-proposed origin/milestone-proposed
Line 75: Line 86:
 
</nowiki></pre>
 
</nowiki></pre>
  
==== Wait for tarball build ====
+
 
 +
'''Wait for tarball build'''
 
* Wait for the $PROJECT-tarball job run to generate a $PROJECT-$PUBVERSION.tar.gz
 
* Wait for the $PROJECT-tarball job run to generate a $PROJECT-$PUBVERSION.tar.gz
  
==== Similarity check ====
+
 
 +
'''Similarity check'''
 
<pre><nowiki>
 
<pre><nowiki>
 
./similar_tarballs.sh $PROJECT milestone-proposed $PUBVERSION
 
./similar_tarballs.sh $PROJECT milestone-proposed $PUBVERSION
 
</nowiki></pre>
 
</nowiki></pre>
  
==== Upload milestone ====
+
 
 +
'''Upload milestone'''
 
<pre><nowiki>
 
<pre><nowiki>
 
./upload_release.py $PROJECT $VERSION --milestone=$MILESTONE
 
./upload_release.py $PROJECT $VERSION --milestone=$MILESTONE
Line 89: Line 103:
 
</nowiki></pre>
 
</nowiki></pre>
  
==== Announce milestone ====
+
 
 +
'''Announce milestone'''
 
* Email to openstack general ML
 
* Email to openstack general ML
 
* Twitter
 
* Twitter
  
=== Post-milestone ===
 
  
==== Remove milestone-proposed branches ====
+
==== Post-milestone ====
 +
 
 +
'''Remove milestone-proposed branches'''
 
* In review.openstack.org project branch admin panel
 
* In review.openstack.org project branch admin panel
  
  
= Final release =
+
== Final release ==
  
 
(also works for Swift integrated releases)
 
(also works for Swift integrated releases)
Line 111: Line 127:
 
</nowiki></pre>
 
</nowiki></pre>
  
=== Pre-flight checks ===
 
  
==== Create next series ====
+
==== Pre-flight checks ====
 +
 
 +
'''Create next series'''
 
* Create $NEXTSERIES series in Launchpad
 
* Create $NEXTSERIES series in Launchpad
 
* Set status to Future, Set release manager
 
* Set status to Future, Set release manager
  
==== Check RC1 has 'RC1' as short name ====
+
 
 +
'''Check RC1 has 'RC1' as short name'''
 
* $NAME-rc1 should have 'RC1' as short milestone name
 
* $NAME-rc1 should have 'RC1' as short milestone name
  
==== Missing files check ====
+
 
 +
'''Missing files check'''
 
<pre><nowiki>
 
<pre><nowiki>
 
./repo_tarball_diff.sh $PROJECT master
 
./repo_tarball_diff.sh $PROJECT master
 
</nowiki></pre>
 
</nowiki></pre>
  
==== Tarball/version status ====
+
 
 +
'''Tarball/version status'''
 
* Check that the $PROJECT-[branch-]tarball jenkins jobs work properly and that they produce the right version numbers
 
* Check that the $PROJECT-[branch-]tarball jenkins jobs work properly and that they produce the right version numbers
  
==== Check bugs ====
+
 
 +
'''Check bugs'''
 
* Look at the list of FixCommitted bugs, sanity-check that they were fixed during the period
 
* Look at the list of FixCommitted bugs, sanity-check that they were fixed during the period
  
=== MP cut (switch master to next version) ===
 
  
==== Get PTL signoff ====
+
==== MP cut (switch master to next version) ====
 +
 
 +
'''Get PTL signoff'''
 
* This should be done close to the RC1 cut
 
* This should be done close to the RC1 cut
 
* For Swift, check that the $VERSION changelog was committed to master
 
* For Swift, check that the $VERSION changelog was committed to master
 
* Note down MP cut commit id
 
* Note down MP cut commit id
  
==== Push new version to master ====
+
 
 +
'''Push new version to master'''
 
* Prepare change which sets next version on master branch in setup.py (or in swift/__init__.py)
 
* Prepare change which sets next version on master branch in setup.py (or in swift/__init__.py)
 
* Get it approved by core and make sure it's merged
 
* Get it approved by core and make sure it's merged
  
==== Create MP branch from previous commit ====
+
 
 +
'''Create MP branch from previous commit'''
 
* Use review.openstack.org admin panel to create branch
 
* Use review.openstack.org admin panel to create branch
 
* Branch name is "milestone-proposed", initial revision is the MP cut commit id
 
* Branch name is "milestone-proposed", initial revision is the MP cut commit id
  
==== Process FixCommitted bugs ====
+
 
 +
'''Process FixCommitted bugs'''
 
<pre><nowiki>
 
<pre><nowiki>
 
./process_bugs.py $PROJECT --settarget=$NAME-rc1 --fixrelease
 
./process_bugs.py $PROJECT --settarget=$NAME-rc1 --fixrelease
 
</nowiki></pre>
 
</nowiki></pre>
  
==== Set $NEXTSERIES as active development ====
+
 
 +
'''Set $NEXTSERIES as active development'''
 
* Make $NEXTSERIES the "Development focus" for $PROJECT
 
* Make $NEXTSERIES the "Development focus" for $PROJECT
 
* Set $NEXTSERIES status to "Active development"
 
* Set $NEXTSERIES status to "Active development"
 
* Set $SERIES status to "Pre-release freeze"
 
* Set $SERIES status to "Pre-release freeze"
  
=== RC1 cut ===
 
  
==== Get PTL signoff ====
+
==== RC1 cut ====
 +
 
 +
'''Get PTL signoff'''
 
* Check that the branch contents are ready to go from PTL perspective
 
* Check that the branch contents are ready to go from PTL perspective
  
==== Push rc1 tag to MP ====
+
 
 +
'''Push rc1 tag to MP'''
 
<pre><nowiki>
 
<pre><nowiki>
 
git checkout -t -b milestone-proposed origin/milestone-proposed
 
git checkout -t -b milestone-proposed origin/milestone-proposed
Line 169: Line 197:
 
</nowiki></pre>
 
</nowiki></pre>
  
==== Wait for tarball build ====
+
 
 +
'''Wait for tarball build'''
 
* Wait for the $PROJECT-tarball job run to generate a $PROJECT-$VERSION.rc1.tar.gz
 
* Wait for the $PROJECT-tarball job run to generate a $PROJECT-$VERSION.rc1.tar.gz
  
==== Similarity check ====
+
 
 +
'''Similarity check'''
 
<pre><nowiki>
 
<pre><nowiki>
 
./similar_tarballs.sh $PROJECT milestone-proposed $VERSION.rc1
 
./similar_tarballs.sh $PROJECT milestone-proposed $VERSION.rc1
 
</nowiki></pre>
 
</nowiki></pre>
  
==== Upload release ====
+
 
 +
'''Upload release'''
 
<pre><nowiki>
 
<pre><nowiki>
 
./upload_release.py $PROJECT $VERSION --milestone=$NAME-rc1
 
./upload_release.py $PROJECT $VERSION --milestone=$NAME-rc1
 
</nowiki></pre>
 
</nowiki></pre>
  
==== Announce RC1 ====
+
 
 +
'''Announce RC1'''
 
* Email to openstack general ML
 
* Email to openstack general ML
 
* Twitter
 
* Twitter
  
=== Further RC-X windows ===
 
  
==== Decision to open next RC window ====
+
==== Further RC-X windows ====
 +
 
 +
'''Decision to open next RC window'''
 
* Consider $SERIES-rc-potential bugs and discuss with PTL if they warrant a respin
 
* Consider $SERIES-rc-potential bugs and discuss with PTL if they warrant a respin
  
==== Create RC-X milestone page ====
+
 
 +
'''Create RC-X milestone page'''
 
* Create the RC-X milestone page (short name = RCX) on Launchpad
 
* Create the RC-X milestone page (short name = RCX) on Launchpad
 
* Target relevant bugs
 
* Target relevant bugs
  
====  Refine/fix bugs ====
+
 
 +
'''Refine/fix bugs'''
 
* Track bug fixes
 
* Track bug fixes
 
* Facilitate backports
 
* Facilitate backports
  
==== Get PTL signoff ====
+
 
 +
'''Get PTL signoff'''
 
* Get confirmation that RC is releasable from PTL perspective
 
* Get confirmation that RC is releasable from PTL perspective
  
==== Push M-rcX tag to MP ====
+
 
 +
'''Push M-rcX tag to MP'''
 
<pre><nowiki>
 
<pre><nowiki>
 
git checkout milestone-proposed
 
git checkout milestone-proposed
Line 210: Line 247:
 
</nowiki></pre>
 
</nowiki></pre>
  
==== Upload release ====
+
 
 +
'''Upload release'''
 
<pre><nowiki>
 
<pre><nowiki>
 
./upload_release.py $PROJECT $VERSION --milestone=$NAME-rcX
 
./upload_release.py $PROJECT $VERSION --milestone=$NAME-rcX
 
</nowiki></pre>
 
</nowiki></pre>
  
==== Wait for tarball build ====
+
 
 +
'''Wait for tarball build'''
 
* Wait for the $PROJECT-tarball job run to generate a $PROJECT-$VERSION.rcX.tar.gz
 
* Wait for the $PROJECT-tarball job run to generate a $PROJECT-$VERSION.rcX.tar.gz
  
==== Similarity check ====
+
 
 +
'''Similarity check'''
 
<pre><nowiki>
 
<pre><nowiki>
 
./similar_tarballs.sh $PROJECT milestone-proposed $VERSION.rcX
 
./similar_tarballs.sh $PROJECT milestone-proposed $VERSION.rcX
 
</nowiki></pre>
 
</nowiki></pre>
  
==== Announce RC-X ====
+
 
 +
'''Announce RC-X'''
 
* Email to openstack general ML
 
* Email to openstack general ML
 
* Twitter
 
* Twitter
  
=== Final release ===
 
  
==== Create final release milestone page ====
+
==== Final release ====
 +
 
 +
'''Create final release milestone page'''
 
* Create the $VERSION final milestone page on Launchpad
 
* Create the $VERSION final milestone page on Launchpad
  
==== Push all bugs and blueprints to final page ====
+
 
 +
'''Push all bugs and blueprints to final page'''
 
<pre><nowiki>
 
<pre><nowiki>
 
./consolidate_release_page.py $PROJECT $SERIES $VERSION
 
./consolidate_release_page.py $PROJECT $SERIES $VERSION
 
</nowiki></pre>
 
</nowiki></pre>
 +
This can take a very long time. For large bugs you will have to run it multiple times. Verify all intermediary milestone pages are now empty.
  
This can take a very long time. For large bugs you will have to run it multiple times. Verify all intermediary milestone pages are now empty.
 
  
==== Push final version tag to MP ====
+
'''Push final version tag to MP'''
 
<pre><nowiki>
 
<pre><nowiki>
 
git checkout milestone-proposed
 
git checkout milestone-proposed
Line 247: Line 290:
 
</nowiki></pre>
 
</nowiki></pre>
  
==== Wait for tarball build ====
+
 
 +
'''Wait for tarball build'''
 
* Wait for the $PROJECT-tarball job run to generate a $PROJECT-$VERSION.tar.gz
 
* Wait for the $PROJECT-tarball job run to generate a $PROJECT-$VERSION.tar.gz
  
==== Similarity check ====
+
 
 +
'''Similarity check'''
 
<pre><nowiki>
 
<pre><nowiki>
 
./similar_tarballs.sh $PROJECT $VERSION.rcX $VERSION
 
./similar_tarballs.sh $PROJECT $VERSION.rcX $VERSION
 
</nowiki></pre>
 
</nowiki></pre>
  
==== Publish release ====
+
 
 +
'''Publish release'''
 
<pre><nowiki>
 
<pre><nowiki>
 
./upload_release.py $PROJECT $VERSION
 
./upload_release.py $PROJECT $VERSION
 
</nowiki></pre>
 
</nowiki></pre>
  
==== Add release notes link to release page ====
+
 
 +
'''Add release notes link to release page'''
 
* Add the "See http://wiki.openstack.org/ReleaseNotes/$SERIES" note to the Release note on the download page.
 
* Add the "See http://wiki.openstack.org/ReleaseNotes/$SERIES" note to the Release note on the download page.
  
==== Announce release ====
+
 
 +
'''Announce release'''
 
* openstack-announce, openstack general ML
 
* openstack-announce, openstack general ML
 
* Twitter etc.
 
* Twitter etc.
  
=== Post-release ===
 
  
==== Update "Releases" wiki page ====
+
==== Post-release ====
 +
 
 +
'''Update "Releases" wiki page'''
 
* http://wiki.openstack.org/Releases
 
* http://wiki.openstack.org/Releases
  
==== Switch dev focus ====
+
 
 +
'''Switch dev focus'''
 
* Switch $SERIES to current stable release, set release manager = openstack-stable-maint
 
* Switch $SERIES to current stable release, set release manager = openstack-stable-maint
 
* Switch previous stable release (series - 1) to Obsolete
 
* Switch previous stable release (series - 1) to Obsolete
  
==== Clean rc-potential tags ====
+
 
 +
'''Clean rc-potential tags'''
 
* Search for https://bugs.launchpad.net/openstack/+bugs?field.tag=$SERIES-rc-potential
 
* Search for https://bugs.launchpad.net/openstack/+bugs?field.tag=$SERIES-rc-potential
 
* Remove tag where found
 
* Remove tag where found
  
==== Create stable/$SERIES ====
+
 
 +
'''Create stable/$SERIES'''
  
 
This step is not necessary for Swift.
 
This step is not necessary for Swift.

Revision as of 13:32, 22 March 2013

Raw notes for release monkeys in case I end up under a bus.

All tools mentioned here can be grabbed from this github repo.

Milestone publication

(also works for Swift interim releases)

PROJECT=nova          # or PROJECT=swift
DEVVERSION=2013.1     # or DEVVERSION=1.8.1
MILESTONE=grizzly-3   # or MILESTONE=1.8.1
PUBVERSION=2013.1.g3  # or PUBVERSION=1.8.1


Pre-flight checks

Missing files check

./repo_tarball_diff.sh $PROJECT master


Tarball/version status

  • Check that the $PROJECT-[branch-]tarball jenkins jobs work properly and that they produce the right version numbers


Check bugs

  • Look at the list of FixCommitted bugs, sanity-check that they were fixed during the period


Get PTL signoff

  • For Swift, check that the $DEVVERSION changelog was committed to master
  • For Swift, set next version on master branch, get it approved by swift-core and make sure it's merged
  • Note down MP cut commit id


MP cut (Tuesday)

Deferring blueprints

  • Move all incomplete blueprints to the next milestone
  • Move all non-milestone-critical bugs to the next milestone


Create MP branch from previous commit

  • Use review.openstack.org admin panel to create branch
  • Branch name is "milestone-proposed", initial revision is the MP cut commit id (or HEAD)


Process FixCommitted bugs

./process_bugs.py $PROJECT --settarget=$MILESTONE --fixrelease


Wait for tarball build

  • Wait for the $PROJECT-branch-tarball job run to generate a $PROJECT-milestone-proposed.tar.gz


Announce candidate builds (once all done)

  • Email to openstack general ML
  • Twitter


In the next days (Wednesday-Thursday)

Track milestone-critical fixes

  • Target milestone-critical fixes to $MILESTONE
  • Backport them to milestone-proposed (see how to do it)


Get PTL signoff

  • For Swift, push change to swift/__init__.py which sets FINAL=True on milestone-proposed branch
  • Note down milestone cut commit id


Milestone publication (Thursday)

Push tag to MP

git checkout -t -b milestone-proposed origin/milestone-proposed
git pull
git tag -s "$PUBVERSION"
git push --tags gerrit


Wait for tarball build

  • Wait for the $PROJECT-tarball job run to generate a $PROJECT-$PUBVERSION.tar.gz


Similarity check

./similar_tarballs.sh $PROJECT milestone-proposed $PUBVERSION


Upload milestone

./upload_release.py $PROJECT $VERSION --milestone=$MILESTONE
# For swift: ./upload_release.py swift $VERSION


Announce milestone

  • Email to openstack general ML
  • Twitter


Post-milestone

Remove milestone-proposed branches

  • In review.openstack.org project branch admin panel


Final release

(also works for Swift integrated releases)

PROJECT=nova       # or PROJECT=swift
VERSION=2013.1     # or VERSION=1.8.0
NEXTVERSION=2013.2 # or NEXTVERSION=1.8.1
NAME=grizzly       # or NAME=1.8.0
SERIES=grizzly
NEXTSERIES=havana


Pre-flight checks

Create next series

  • Create $NEXTSERIES series in Launchpad
  • Set status to Future, Set release manager


Check RC1 has 'RC1' as short name

  • $NAME-rc1 should have 'RC1' as short milestone name


Missing files check

./repo_tarball_diff.sh $PROJECT master


Tarball/version status

  • Check that the $PROJECT-[branch-]tarball jenkins jobs work properly and that they produce the right version numbers


Check bugs

  • Look at the list of FixCommitted bugs, sanity-check that they were fixed during the period


MP cut (switch master to next version)

Get PTL signoff

  • This should be done close to the RC1 cut
  • For Swift, check that the $VERSION changelog was committed to master
  • Note down MP cut commit id


Push new version to master

  • Prepare change which sets next version on master branch in setup.py (or in swift/__init__.py)
  • Get it approved by core and make sure it's merged


Create MP branch from previous commit

  • Use review.openstack.org admin panel to create branch
  • Branch name is "milestone-proposed", initial revision is the MP cut commit id


Process FixCommitted bugs

./process_bugs.py $PROJECT --settarget=$NAME-rc1 --fixrelease


Set $NEXTSERIES as active development

  • Make $NEXTSERIES the "Development focus" for $PROJECT
  • Set $NEXTSERIES status to "Active development"
  • Set $SERIES status to "Pre-release freeze"


RC1 cut

Get PTL signoff

  • Check that the branch contents are ready to go from PTL perspective


Push rc1 tag to MP

git checkout -t -b milestone-proposed origin/milestone-proposed
git pull
git tag -s $VERSION.rc1
git push --tags gerrit


Wait for tarball build

  • Wait for the $PROJECT-tarball job run to generate a $PROJECT-$VERSION.rc1.tar.gz


Similarity check

./similar_tarballs.sh $PROJECT milestone-proposed $VERSION.rc1


Upload release

./upload_release.py $PROJECT $VERSION --milestone=$NAME-rc1


Announce RC1

  • Email to openstack general ML
  • Twitter


Further RC-X windows

Decision to open next RC window

  • Consider $SERIES-rc-potential bugs and discuss with PTL if they warrant a respin


Create RC-X milestone page

  • Create the RC-X milestone page (short name = RCX) on Launchpad
  • Target relevant bugs


Refine/fix bugs

  • Track bug fixes
  • Facilitate backports


Get PTL signoff

  • Get confirmation that RC is releasable from PTL perspective


Push M-rcX tag to MP

git checkout milestone-proposed
git pull
git tag -s $VERSION.rcX
git push --tags gerrit


Upload release

./upload_release.py $PROJECT $VERSION --milestone=$NAME-rcX


Wait for tarball build

  • Wait for the $PROJECT-tarball job run to generate a $PROJECT-$VERSION.rcX.tar.gz


Similarity check

./similar_tarballs.sh $PROJECT milestone-proposed $VERSION.rcX


Announce RC-X

  • Email to openstack general ML
  • Twitter


Final release

Create final release milestone page

  • Create the $VERSION final milestone page on Launchpad


Push all bugs and blueprints to final page

./consolidate_release_page.py $PROJECT $SERIES $VERSION

This can take a very long time. For large bugs you will have to run it multiple times. Verify all intermediary milestone pages are now empty.


Push final version tag to MP

git checkout milestone-proposed
git pull
git tag -s $VERSION
git push --tags gerrit


Wait for tarball build

  • Wait for the $PROJECT-tarball job run to generate a $PROJECT-$VERSION.tar.gz


Similarity check

./similar_tarballs.sh $PROJECT $VERSION.rcX $VERSION


Publish release

./upload_release.py $PROJECT $VERSION


Add release notes link to release page


Announce release

  • openstack-announce, openstack general ML
  • Twitter etc.


Post-release

Update "Releases" wiki page


Switch dev focus

  • Switch $SERIES to current stable release, set release manager = openstack-stable-maint
  • Switch previous stable release (series - 1) to Obsolete


Clean rc-potential tags


Create stable/$SERIES

This step is not necessary for Swift.

Create devnull branch (from MP):

  • Go to review.openstack.org project branch admin panel
  • New branch: "devnull", Initial revision: "milestone-proposed"


Push .1 version to devnull branch:

git checkout -t -b devnull origin/devnull
vi setup.py # set to $VERSION.1
git commit -a
git review devnull


Create stable/$SERIES branch from devnull branch:

  • Go to review.openstack.org project branch admin panel
  • New branch: "stable/$SERIES", Initial revision: "devnull"


Remove devnull and milestone-proposed branches:

  • In review.openstack.org project branch admin panel