Jump to: navigation, search

Difference between revisions of "ReleaseTeam/How To Release"

m (Switch dev focus)
(Introduce similarity_check.sh)
Line 79: Line 79:
  
 
==== Similarity check ====
 
==== Similarity check ====
* Check that this tarball is equivalent to the latest published $PROJECT-milestone-proposed.tar.gz
+
<pre><nowiki>
 +
./similar_tarballs.sh $PROJECT milestone-proposed $PUBVERSION
 +
</nowiki></pre>
  
 
==== Upload milestone ====
 
==== Upload milestone ====
Line 169: Line 171:
 
==== 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 ====
 +
<pre><nowiki>
 +
./similar_tarballs.sh $PROJECT milestone-proposed $VERSION.rc1
 +
</nowiki></pre>
  
 
==== Upload release ====
 
==== Upload release ====
Line 212: Line 219:
  
 
==== Similarity check ====
 
==== Similarity check ====
* Check that this tarball is equivalent to the latest published $PROJECT-milestone-proposed.tar.gz
+
<pre><nowiki>
 +
./similar_tarballs.sh $PROJECT milestone-proposed $VERSION.rcX
 +
</nowiki></pre>
  
 
==== Announce RC-X ====
 
==== Announce RC-X ====
Line 242: Line 251:
  
 
==== Similarity check ====
 
==== Similarity check ====
* Check that this tarball is equivalent to the latest published $PROJECT-$VERSION.rcX.tar.gz
+
<pre><nowiki>
 +
./similar_tarballs.sh $PROJECT $VERSION.rcX $VERSION
 +
</nowiki></pre>
  
 
==== Publish release ====
 
==== Publish release ====

Revision as of 16:57, 13 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