Jump to: navigation, search

Difference between revisions of "ReleaseTeam/How To Release"

(Milestone publication)
Line 1: Line 1:
 
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 ==
Line 75: Line 75:
 
==== Milestone publication (Thursday) ====
 
==== Milestone publication (Thursday) ====
  
'''One script to bind them all'''
+
'''Tag, wait for tarball, check similarities and upload'''
 
<pre><nowiki>
 
<pre><nowiki>
 
./mpdelivery.sh $DEVVERSION $MILESTONE $PUBVERSION $PROJECT
 
./mpdelivery.sh $DEVVERSION $MILESTONE $PUBVERSION $PROJECT
 
</nowiki></pre>
 
</nowiki></pre>
 
This will
 
* Push tag to MP
 
* Wait for the tagged tarball build
 
* Run a similarity check and prompt you to continue
 
* Upload milestone
 
  
  
Line 90: Line 84:
 
* Email to openstack general ML
 
* Email to openstack general ML
 
* Twitter
 
* Twitter
 +
  
 
==== Post-milestone ====
 
==== Post-milestone ====
Line 95: Line 90:
 
'''Remove milestone-proposed branches'''
 
'''Remove milestone-proposed branches'''
 
* In review.openstack.org project branch admin panel
 
* In review.openstack.org project branch admin panel
 +
  
 
== Final release ==
 
== Final release ==
Line 102: Line 98:
 
PROJECT=nova      # or PROJECT=swift
 
PROJECT=nova      # or PROJECT=swift
 
VERSION=2013.1    # or VERSION=1.8.0
 
VERSION=2013.1    # or VERSION=1.8.0
NEXTVERSION=2013.2 # or NEXTVERSION=1.8.1
 
 
NAME=grizzly      # or NAME=1.8.0
 
NAME=grizzly      # or NAME=1.8.0
 
SERIES=grizzly
 
SERIES=grizzly
Line 124: Line 119:
 
./repo_tarball_diff.sh $PROJECT master
 
./repo_tarball_diff.sh $PROJECT master
 
</nowiki></pre>
 
</nowiki></pre>
 
 
'''Tarball/version status'''
 
* Check that the $PROJECT-[branch-]tarball jenkins jobs work properly and that they produce the right version numbers
 
  
  
Line 139: Line 130:
 
* 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
 
  
  
 
'''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.cfg (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
 +
* Note down SHA = MP cut commit id (the commit just before the version bump)
  
  
 
'''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 $SHA
  
  
Line 167: Line 158:
  
 
'''Get PTL signoff'''
 
'''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 (backport any last-minute bugfix)
  
  
'''Push rc1 tag to MP'''
+
'''Tag, wait for tarball, check similarities and upload'''
 
<pre><nowiki>
 
<pre><nowiki>
git checkout -t -b milestone-proposed origin/milestone-proposed
+
./mpdelivery.sh $VERSION $NAME-rc1 $VERSION.rc1 $PROJECT
git pull
 
git tag -s $VERSION.rc1
 
git push gerrit $VERSION.rc1
 
</nowiki></pre>
 
 
 
 
 
'''Wait for tarball build'''
 
* 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'''
 
<pre><nowiki>
 
./upload_release.py $PROJECT $VERSION --milestone=$NAME-rc1
 
 
</nowiki></pre>
 
</nowiki></pre>
  
Line 220: Line 192:
  
  
'''Push M-rcX tag to MP'''
+
'''Tag, wait for tarball, check similarities and upload'''
 
<pre><nowiki>
 
<pre><nowiki>
git checkout milestone-proposed
+
./mpdelivery.sh $VERSION $NAME-rcX $VERSION.rcX $PROJECT
git pull
 
git tag -s $VERSION.rcX
 
git push gerrit $VERSION.rcX
 
</nowiki></pre>
 
 
 
 
 
'''Wait for tarball build'''
 
* Wait for the $PROJECT-tarball job run to generate a $PROJECT-$VERSION.rcX.tar.gz
 
 
 
 
 
'''Similarity check'''
 
<pre><nowiki>
 
./similar_tarballs.sh $PROJECT milestone-proposed $VERSION.rcX
 
</nowiki></pre>
 
 
 
 
 
'''Upload release'''
 
<pre><nowiki>
 
./upload_release.py $PROJECT $VERSION --milestone=$NAME-rcX
 
 
</nowiki></pre>
 
</nowiki></pre>
  
Line 262: Line 215:
  
  
'''Push final version tag to MP'''
+
'''Tag, wait for tarball, check similarities and upload'''
 
<pre><nowiki>
 
<pre><nowiki>
git checkout milestone-proposed
+
./mpdelivery.sh $VERSION $VERSION $VERSION $PROJECT
git pull
 
git tag -s $VERSION
 
git push gerrit $VERSION
 
 
</nowiki></pre>
 
</nowiki></pre>
  
  
'''Wait for tarball build'''
+
'''Extra similarity check'''
* Wait for the $PROJECT-tarball job run to generate a $PROJECT-$VERSION.tar.gz
 
 
 
 
 
'''Similarity check'''
 
 
<pre><nowiki>
 
<pre><nowiki>
 
./similar_tarballs.sh $PROJECT $VERSION.rcX $VERSION
 
./similar_tarballs.sh $PROJECT $VERSION.rcX $VERSION
</nowiki></pre>
 
 
 
'''Publish release'''
 
<pre><nowiki>
 
./upload_release.py $PROJECT $VERSION
 
 
</nowiki></pre>
 
</nowiki></pre>
  
Line 325: Line 265:
 
git checkout -t -b stable/$SERIES origin/stable/$SERIES
 
git checkout -t -b stable/$SERIES origin/stable/$SERIES
 
git checkout -b stable-$SERIES
 
git checkout -b stable-$SERIES
vi setup.py # set to $VERSION.1
+
vi setup.cfg # set to $VERSION.1
 
vi .gitreview # set defaultbranch=stable/$SERIES
 
vi .gitreview # set defaultbranch=stable/$SERIES
 
git commit -a
 
git commit -a
 
git review stable/$SERIES
 
git review stable/$SERIES
 
</nowiki></pre>
 
</nowiki></pre>

Revision as of 09:28, 27 September 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


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 SHA = MP cut commit id (for Swift, that would be the one just before the next-version commit)


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

  • Use review.openstack.org admin panel to create branch
  • Branch name is "milestone-proposed", initial revision is $SHA (or "HEAD")


Process FixCommitted bugs

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


Wait for milestone-proposed.tar.gz tarball build

./wait_for_tarball.py $SHA


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


Milestone publication (Thursday)

Tag, wait for tarball, check similarities and upload

./mpdelivery.sh $DEVVERSION $MILESTONE $PUBVERSION $PROJECT


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
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


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


Push new version to master

  • Prepare change which sets next version on master branch in setup.cfg (or in swift/__init__.py)
  • Get it approved by core and make sure it's merged
  • Note down SHA = MP cut commit id (the commit just before the version bump)


Create MP branch from previous commit

  • Use review.openstack.org admin panel to create branch
  • Branch name is "milestone-proposed", initial revision is $SHA


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 (backport any last-minute bugfix)


Tag, wait for tarball, check similarities and upload

./mpdelivery.sh $VERSION $NAME-rc1 $VERSION.rc1 $PROJECT


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


Tag, wait for tarball, check similarities and upload

./mpdelivery.sh $VERSION $NAME-rcX $VERSION.rcX $PROJECT


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.


Tag, wait for tarball, check similarities and upload

./mpdelivery.sh $VERSION $VERSION $VERSION $PROJECT


Extra similarity check

./similar_tarballs.sh $PROJECT $VERSION.rcX $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

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


Remove milestone-proposed branch

  • In review.openstack.org project branch admin panel


Push .1 version to stable/$SERIES branch

git checkout -t -b stable/$SERIES origin/stable/$SERIES
git checkout -b stable-$SERIES
vi setup.cfg # set to $VERSION.1
vi .gitreview # set defaultbranch=stable/$SERIES
git commit -a
git review stable/$SERIES