Jump to: navigation, search

Difference between revisions of "ReleaseTeam/How To Release"

(Updated for new tools)
(Step 1 in final release procedure rewrite)
Line 16: Line 16:
  
 
==== Missing files check ====
 
==== Missing files check ====
 
 
<pre><nowiki>
 
<pre><nowiki>
 
./repo_tarball_diff.sh $PROJECT master
 
./repo_tarball_diff.sh $PROJECT master
Line 41: Line 40:
  
 
==== Process FixCommitted bugs ====
 
==== Process FixCommitted bugs ====
 
 
<pre><nowiki>
 
<pre><nowiki>
 
./process_bugs.py $PROJECT --settarget=$MILESTONE --fixrelease
 
./process_bugs.py $PROJECT --settarget=$MILESTONE --fixrelease
Line 65: Line 63:
  
 
==== Push tag to MP ====
 
==== Push tag to MP ====
 
 
<pre><nowiki>
 
<pre><nowiki>
 
git checkout milestone-proposed
 
git checkout milestone-proposed
Line 77: Line 74:
  
 
==== Upload milestone ====
 
==== Upload milestone ====
 
 
<pre><nowiki>
 
<pre><nowiki>
 
./upload_release.py $PROJECT $VERSION --milestone=$MILESTONE
 
./upload_release.py $PROJECT $VERSION --milestone=$MILESTONE
Line 91: Line 87:
 
* In review.openstack.org project branch admin panel
 
* In review.openstack.org project branch admin panel
  
= Final release (outdated !) =
 
  
Supposing we want to release "Morlock" (2014.1), and next release is called "Night" (2014.2).
+
= Final release =
 +
 
 +
<pre><nowiki>
 +
PROJECT=nova
 +
VERSION=2013.1
 +
NEXTVERSION=2013.2
 +
SERIES=grizzly
 +
NEXTSERIES=havana
 +
</nowiki></pre>
  
 
=== Pre-flight checks ===
 
=== Pre-flight checks ===
 +
 
==== Create next series ====
 
==== Create next series ====
* Create "night" series in Launchpad
+
* Create $NEXTSERIES series in Launchpad
 
* Set status to Future, Set release manager
 
* Set status to Future, Set release manager
 +
 
==== Missing files check ====
 
==== Missing files check ====
 
 
<pre><nowiki>
 
<pre><nowiki>
cd project
+
./repo_tarball_diff.sh $PROJECT master
tarball-repo-diff
 
 
</nowiki></pre>
 
</nowiki></pre>
  
 
==== Tarball/version status ====
 
==== Tarball/version status ====
* Check that the *-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) ===
 
=== MP cut (switch master to next version) ===
 +
 
==== Get PTL signoff ====
 
==== Get PTL signoff ====
 
* This should be done close to the RC1 cut
 
* This should be done close to the RC1 cut
 
* Note down MP cut commit id
 
* Note down MP cut commit id
==== Bump master milestone code ====
+
 
* Use ''common-bump-milestone'' Jenkins job
+
==== Push new version to master ====
* Select project, "master" and type "n1"
+
* Prepare change which sets next version on master branch (in setup.py)
==== Push new version to master as first commit ====
 
* /!\ This needs to be done as the very first commit after the n1 milestone bump !
 
* Prepare change which sets next version on master branch
 
 
* 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-fixcommitted-bugs.py nova --milestone morlock-rc1 --settarget morlock-rc1 --fixrelease
+
./process_bugs.py $PROJECT --settarget=$SERIES-rc1 --fixrelease
 
</nowiki></pre>
 
</nowiki></pre>
  
 
=== RC1 cut ===
 
=== RC1 cut ===
 +
 
==== 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
==== Push FINAL=True commit to MP (some projects only) ====
+
 
* Prepare change which sets FINAL=True on milestone-proposed branch
 
* Approve and make sure it's merged
 
==== Wait for Final tarball ====
 
* Wait for the *-tarball job run
 
* Note down tarball version
 
==== Bump MP milestone code to rc2 ====
 
* Use ''common-bump-milestone'' Jenkins job
 
* Select project, "milestone-proposed" and type "rc2"
 
 
==== Push rc1 tag to MP ====
 
==== Push rc1 tag to MP ====
 
 
<pre><nowiki>
 
<pre><nowiki>
 
git checkout milestone-proposed
 
git checkout milestone-proposed
 
git pull
 
git pull
git tag -s morlock-rc1
+
git tag -s $VERSION.rc1
 
git push --tags gerrit
 
git push --tags gerrit
 
</nowiki></pre>
 
</nowiki></pre>
 +
 +
==== Wait for tarball build ====
 +
* Wait for the $PROJECT-tarball job run to generate a $PROJECT-$VERSION.rc1.tar.gz
  
 
==== Upload release ====
 
==== Upload release ====
 
 
<pre><nowiki>
 
<pre><nowiki>
upload_release.py nova 2014.1 --milestone=morlock-rc1
+
./upload_release.py $PROJECT $VERSION --milestone=$SERIES-rc1
 
</nowiki></pre>
 
</nowiki></pre>
  
Line 162: Line 160:
  
 
=== Further RC-X windows ===
 
=== Further RC-X windows ===
 +
 
==== Decision to open next RC window ====
 
==== Decision to open next RC window ====
* Consider m-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 on Launchpad
 
* Create the RC-X milestone page 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 candidate tarball ====
+
 
* Wait for the *-tarball job run
 
* Note down tarball version
 
 
==== Get PTL signoff ====
 
==== Get PTL signoff ====
* Get confirmation that RC is releasable from PTL
+
* Get confirmation that RC is releasable from PTL perspective
==== Bump MP milestone code to next rcX+1 ====
+
 
* Use ''common-bump-milestone'' Jenkins job
 
* Select project, "milestone-proposed" and type "rcX+1"
 
 
==== Push M-rcX tag to MP ====
 
==== Push M-rcX tag to MP ====
 
 
<pre><nowiki>
 
<pre><nowiki>
 
git checkout milestone-proposed
 
git checkout milestone-proposed
 
git pull
 
git pull
git tag -s morlock-rcX
+
git tag -s $VERSION.rcX
 
git push --tags gerrit
 
git push --tags gerrit
 
</nowiki></pre>
 
</nowiki></pre>
  
 
==== Upload release ====
 
==== Upload release ====
 
 
<pre><nowiki>
 
<pre><nowiki>
upload_release.py nova 2014.1 --milestone=morlock-rcX
+
./upload_release.py $PROJECT $VERSION --milestone=$SERIES-rcX
 
</nowiki></pre>
 
</nowiki></pre>
 +
 +
==== Wait for tarball build ====
 +
* Wait for the $PROJECT-tarball job run to generate a $PROJECT-$VERSION.rcX.tar.gz
 +
 +
==== Similarity check ====
 +
* Check that this tarball is equivalent to the latest published $PROJECT-milestone-proposed.tar.gz
  
 
==== Announce RC-X ====
 
==== Announce RC-X ====
 +
* Email to openstack general ML
 +
* Twitter
  
 
=== Final release ===
 
=== Final release ===
 +
 
==== Create final release milestone page ====
 
==== Create final release milestone page ====
* Create the 2014.1 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 nova morlock 2014.1
 
consolidate_release_page.py nova morlock 2014.1
Line 207: Line 211:
  
 
==== Push final version tag to MP ====
 
==== Push final version tag to MP ====
 
 
<pre><nowiki>
 
<pre><nowiki>
 
git checkout milestone-proposed
 
git checkout milestone-proposed
 
git pull
 
git pull
git tag -s 2014.1
+
git tag -s $VERSION
 
git push --tags gerrit
 
git push --tags gerrit
 
</nowiki></pre>
 
</nowiki></pre>
  
==== Promote last RC to release ====
+
==== Wait for tarball build ====
 +
* Wait for the $PROJECT-tarball job run to generate a $PROJECT-$VERSION.tar.gz
 +
 
 +
==== Similarity check ====
 +
* Check that this tarball is equivalent to the latest published $PROJECT-rcX.tar.gz
  
 +
==== Publish release ====
 
<pre><nowiki>
 
<pre><nowiki>
promote_rc.py PROJECT 2014.1 rc2
+
./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/Folsom" note to the Release note on the download page.
 
* Add the "See http://wiki.openstack.org/ReleaseNotes/Folsom" 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 ===
 
=== Post-release ===
 +
 
==== Update "Releases" wiki page ====
 
==== Update "Releases" wiki page ====
 
* http://wiki.openstack.org/Releases
 
* http://wiki.openstack.org/Releases
 +
 
==== Switch dev focus ====
 
==== Switch dev focus ====
* Switch dev focus to N and N status to under active development
+
* Switch dev focus to $NEXTSERIES and $NEXTSERIES status to under active development
* Switch M to current stable release, set release manager = openstack-stable-maint
+
* Switch $SERIES to current stable release, set release manager = openstack-stable-maint
* Switch M-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=morlock-rc-potential
+
* Search for https://bugs.launchpad.net/openstack/+bugs?field.tag=$SERIES-rc-potential
 
* Remove tag where found
 
* Remove tag where found
 +
 
==== Create devnull branch (from MP) ====
 
==== Create devnull branch (from MP) ====
 
* Go to review.openstack.org project branch admin panel
 
* Go to review.openstack.org project branch admin panel
 
* New branch: "devnull", Initial revision: "milestone-proposed"
 
* New branch: "devnull", Initial revision: "milestone-proposed"
 +
 
==== Push .1 version to devnull branch ====
 
==== Push .1 version to devnull branch ====
 
 
<pre><nowiki>
 
<pre><nowiki>
 
git checkout -t -b devnull origin/devnull
 
git checkout -t -b devnull origin/devnull
vi nova/version.py # set to 2014.1.1
+
vi setup.py # set to $VERSION.1
 
git commit -a
 
git commit -a
 
git review devnull
 
git review devnull
 
</nowiki></pre>
 
</nowiki></pre>
  
==== Create stable/folsom branch from devnull branch ====
+
==== Create stable/$SERIES branch from devnull branch ====
 
* Go to review.openstack.org project branch admin panel
 
* Go to review.openstack.org project branch admin panel
* New branch: "stable/morlock", Initial revision: "devnull"
+
* New branch: "stable/$SERIES", Initial revision: "devnull"
 +
 
 
==== Remove devnull and milestone-proposed branches ====
 
==== Remove devnull and milestone-proposed branches ====
 
* In review.openstack.org project branch admin panel
 
* In review.openstack.org project branch admin panel
==== Bump MP milestone code ====
 
* Use ''common-bump-milestone'' Jenkins job
 
* Select project, "milestone-proposed" and type "n1"
 
  
 
= Swift releases (outdated !) =
 
= Swift releases (outdated !) =

Revision as of 15:14, 11 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

PROJECT=nova
VERSION=2013.1
MILESTONE=grizzly-3
SHORT=g3

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

  • 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

  • Note down milestone cut commit id

Milestone publication (Thursday)

Push tag to MP

git checkout milestone-proposed
git pull
git tag -s "$PROJECT.$SHORT"
git push --tags gerrit

Wait for tarball build

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

Upload milestone

./upload_release.py $PROJECT $VERSION --milestone=$MILESTONE

Announce milestone

  • Email to openstack general ML
  • Twitter

Post-milestone

Remove milestone-proposed branches

  • In review.openstack.org project branch admin panel


Final release

PROJECT=nova
VERSION=2013.1
NEXTVERSION=2013.2
SERIES=grizzly
NEXTSERIES=havana

Pre-flight checks

Create next series

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

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
  • Note down MP cut commit id

Push new version to master

  • Prepare change which sets next version on master branch (in setup.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=$SERIES-rc1 --fixrelease

RC1 cut

Get PTL signoff

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

Push rc1 tag to MP

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

Upload release

./upload_release.py $PROJECT $VERSION --milestone=$SERIES-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 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=$SERIES-rcX

Wait for tarball build

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

Similarity check

  • Check that this tarball is equivalent to the latest published $PROJECT-milestone-proposed.tar.gz

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 nova morlock 2014.1

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

  • Check that this tarball is equivalent to the latest published $PROJECT-rcX.tar.gz

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 dev focus to $NEXTSERIES and $NEXTSERIES status to under active development
  • 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 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

Swift releases (outdated !)

Swift uses separate versioning and does not use milestones. Let's suppose we are releasing 1.8.2 and next version is called 1.8.3.

Pre-flight checks

Missing files check

cd swift
tarball-repo-diff


Tarball/version status

  • Check that the swift-tarball jenkins jobs work properly and that they produce the right version numbers

Check bugs & blueprints

  • Look at the list of FixCommitted bugs, sanity-check that they were fixed during the period
  • Check that the 1.8.2 milestone page is sane (all implemented blueprints)

Get PTL signoff

  • Check that the 1.8.2 changelog was committed to master
  • Note down MP cut commit id

MP cut

Push new version to master

  • Prepare change which sets 1.8.3 on master branch
  • Get it approved by swift-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-fixcommitted-bugs.py swift --milestone 1.8.2 --settarget 1.8.2 --fixrelease


Wait for tarball build

  • Wait for the swift-tarball job run
  • Note down tarball version

QA for proposed release

Push FINAL=True commit to MP

  • Prepare change which sets FINAL=True on milestone-proposed branch
  • Approve and make sure it's merged

Get Final PTL signoff

  • Note down release commit id

Wait for tarball build

  • Wait for the swift-tarball job run
  • Note down tarball version

Release publication

Push tag to MP

git checkout milestone-proposed
git pull
git tag -s 1.8.2
git push --tags gerrit


Upload milestone

upload_release.py swift 1.8.2


Announce release

  • Email to openstack general, openstack-announce ML
  • Twitter

Post-milestone

Remove milestone-proposed branch

  • In review.openstack.org project branch admin panel