Jump to: navigation, search

Difference between revisions of "ReleaseTeam/How To Release"

(Updates at grizzly-3)
 
(47 intermediate revisions by 3 users not shown)
Line 1: Line 1:
__NOTOC__
+
{{ caution|http://git.openstack.org/cgit/openstack-infra/release-tools/tree/README.rst|Information here is obsolete.You should read instead: }}
Raw notes for release monkeys in case I end up under a bus.
 
  
= Milestone publication =
+
You can find all tools mentioned here in the [http://git.openstack.org/cgit/openstack-infra/release-tools openstack-infra/release-tools] repository.
  
Supposing release under development is "Morlock" (2014.1) and we want to publish "morlock-2" milestone.
+
__TOC__
  
=== Pre-flight checks ===
+
== Development milestone publication ==
 +
 
 +
<pre><nowiki>
 +
PROJECT=nova
 +
MILESTONE=juno-3
 +
</nowiki></pre>
  
==== Missing files check ====
 
  
 +
==== Pre-flight checks ====
 +
 +
 +
'''Missing files check''' (for all integrated projects doing the milestone)
 
<pre><nowiki>
 
<pre><nowiki>
cd project
+
./repo_tarball_diff.sh $PROJECT master
tarball-repo-diff
 
 
</nowiki></pre>
 
</nowiki></pre>
  
  
==== Tarball/version status ====
+
==== Milestone tag/publication (between Tuesday and Thursday) ====
* Check that the *-tarball jenkins jobs work properly and that they produce the right version numbers
+
 
 +
All the integrated projects, as well as oslo-incubator and oslo.messaging, need to follow this process sometimes during the milestone publication window.
 +
 
 +
NB: The milestone.sh script special-cases oslo-incubator (where no tarball is published) and oslo.messaging (where no tag is pushed and no tarball is published) so you can just run the same commands with them.
  
==== Check bugs ====
 
* Look at the list of FixCommitted bugs, sanity-check that they were fixed during the period
 
  
==== Get PTL signoff ====
+
'''Get PTL signoff''' (for all except oslo.messaging)
* Note down MP cut commit id
+
* PTL confirms SHA for tag
  
=== MP cut (Tuesday) ===
 
  
==== Deferring blueprints ====
+
'''Deferring blueprints and bugs'''
* Move all incomplete blueprints to the next milestone
+
* Move all incomplete blueprints to the next milestone ($MILESTONE should all be 'Implemented')
* Move all non-milestone-critical bugs to the next milestone
+
* Move all incomplete bugs to the next milestone ($MILESTONE should all be 'Fix Committed'). You can use the following script:
  
==== Create MP branch from previous commit ====
+
<pre><nowiki>
* Use review.openstack.org admin panel to create branch
+
./process_bugs.py $PROJECT --milestone $MILESTONE --settarget $NEXTMILESTONE
* Branch name is "milestone-proposed", initial revision is the MP cut commit id (or HEAD)
+
</nowiki></pre>
  
==== Process FixCommitted bugs ====
 
  
 +
'''Tag, wait for tarball build, process FixCommitted bugs, check similarities and upload (if applicable)'''
 
<pre><nowiki>
 
<pre><nowiki>
./process-fixcommitted-bugs.py nova --milestone morlock-2 --settarget morlock-2 --fixrelease
+
./milestone.sh $MILESTONE $SHA $PROJECT
 
</nowiki></pre>
 
</nowiki></pre>
  
  
==== Wait for tarball build ====
+
NB: for oslo.messaging $SHA is not used for tagging and is therefore ignored.
* Wait for the *-branch-tarball job run to generate a PROJ-milestone-proposed.tar.gz
+
 
  
==== Announce candidate builds (once all done) ====
+
==== When all projects are done ====
 +
 
 +
'''Announce milestone'''
 
* Email to openstack general ML
 
* Email to openstack general ML
 
* Twitter
 
* Twitter
  
=== In the next days (Wednesday-Thursday) ===
 
  
==== Track milestone-critical fixes ====
+
== Swift intermediary releases ==
* Target milestone-critical fixes to morlock-2
 
* Backport them to milestone-proposed (see [[GerritJenkinsGithub#Authoring_Changes_for_milestone-proposed|how to do it]])
 
  
==== Get PTL signoff ====
+
<pre><nowiki>
* Note down milestone cut commit id
+
PROJECT=swift
 +
MILESTONE=1.8.1
 +
</nowiki></pre>
  
=== Milestone publication (Thursday) ===
 
  
==== Push tag to MP ====
+
==== Pre-flight checks ====
  
 +
'''Missing files check'''
 
<pre><nowiki>
 
<pre><nowiki>
git checkout milestone-proposed
+
./repo_tarball_diff.sh swift master
git pull
 
git tag -s "2014.1.m2"
 
git push --tags gerrit
 
 
</nowiki></pre>
 
</nowiki></pre>
  
==== Wait for tarball build ====
 
* Wait for the *-tarball job run to generate a PROJ-2014.1.m2.tar.gz
 
  
==== Upload milestone ====
+
'''Check bugs'''
 +
* Look at the list of FixCommitted bugs, sanity-check that they were fixed during the period
 +
 
 +
 
 +
==== RC1 tag ====
  
 +
'''Get PTL signoff'''
 +
* Get RC1 $RCSHA from PTL
 +
* Check that the $MILESTONE changelog was committed to master
 +
 +
 +
'''Deferring blueprints'''
 +
* Move all incomplete blueprints to the next milestone ($MILESTONE should all be 'Implemented')
 +
* Move all incomplete bugs to the next milestone ($MILESTONE should all be 'Fix Committed')
 +
 +
 +
'''Tag RC1, wait for tarball build and process FixCommitted bugs'''
 
<pre><nowiki>
 
<pre><nowiki>
upload_release.py nova 2014.1 --milestone=morlock-2
+
./swiftrc.sh $RC1SHA $MILESTONE
 
</nowiki></pre>
 
</nowiki></pre>
  
  
==== Announce milestone ====
+
'''Announce candidate builds'''
 
* Email to openstack general ML
 
* Email to openstack general ML
 
* Twitter
 
* Twitter
  
=== Post-milestone ===
 
  
==== Remove milestone-proposed branches ====
+
==== Further RCs ====
* In review.openstack.org project branch admin panel
 
  
= Final release (outdated !) =
+
We generally hope that intermediary Swift releases won't generate multiple RCs, but shit sometimes happens. In that case we follow a manual process.
  
Supposing we want to release "Morlock" (2014.1), and next release is called "Night" (2014.2).
 
  
=== Pre-flight checks ===
+
'''Set up proposed/$MILESTONE branch'''
==== Create next series ====
+
* Go to review.openstack.org and create a proposed/$MILESTONE branch with the same SHA as the RC1 tag
* Create "night" series in Launchpad
+
* Backport fixes to this branch
* Set status to Future, Set release manager
+
 
==== Missing files check ====
 
  
 +
'''Manually push new tag on that branch'''
 
<pre><nowiki>
 
<pre><nowiki>
cd project
+
git checkout master && git pull
tarball-repo-diff
+
git checkout -b proposed/$MILESTONE -t origin/proposed/$MILESTONE
 +
git tag -m "Swift $MILESTONE-rc2" -s "${MILESTONE}rc2" $RC2SHA
 +
git push gerrit ${MILESTONE}rc2
 
</nowiki></pre>
 
</nowiki></pre>
  
==== Tarball/version status ====
 
* Check that the *-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
 
==== Bump master milestone code ====
 
* Use ''common-bump-milestone'' Jenkins job
 
* Select project, "master" and type "n1"
 
==== 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
 
==== 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 ====
 
  
 +
==== Release ====
 +
 +
'''Get PTL signoff'''
 +
* Get confirmation that SHA=RCxSHA
 +
 +
 +
'''Tag, wait for tarball build, check similarities and upload'''
 
<pre><nowiki>
 
<pre><nowiki>
./process-fixcommitted-bugs.py nova --milestone morlock-rc1 --settarget morlock-rc1 --fixrelease
+
./milestone.sh $MILESTONE $SHA swift
 
</nowiki></pre>
 
</nowiki></pre>
  
=== RC1 cut ===
+
 
==== Get PTL signoff ====
+
'''Announce release'''
* Check that the branch contents are ready to go from PTL perspective
+
* Email to openstack general ML & openstack announce.
==== Push FINAL=True commit to MP (some projects only) ====
+
* Twitter
* Prepare change which sets FINAL=True on milestone-proposed branch
+
* If a proposed/$MILESTONE branch was created, check that tags merged back to master and delete the branch (manually under review.openstack.org)
* Approve and make sure it's merged
+
 
==== Wait for Final tarball ====
+
 
* Wait for the *-tarball job run
+
== Final release ==
* Note down tarball version
+
 
==== Bump MP milestone code to rc2 ====
+
NB: The rccut.sh and rcdelivery.sh scripts special-case swift (where RC milestones are named differently) and oslo-incubator (where no tarball is published), so you can just run the same commands with them. They do '''not''' handle oslo.* libraries where tagging is external: bugs must be closed directly and stable branches created manually.
* Use ''common-bump-milestone'' Jenkins job
 
* Select project, "milestone-proposed" and type "rc2"
 
==== Push rc1 tag to MP ====
 
  
 
<pre><nowiki>
 
<pre><nowiki>
git checkout milestone-proposed
+
PROJECT=nova
git pull
+
SERIES=icehouse
git tag -s morlock-rc1
+
FINALSWIFT=2.0.0
git push --tags gerrit
+
NEXTSERIES=juno
 
</nowiki></pre>
 
</nowiki></pre>
  
==== Upload release ====
 
  
 +
==== 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'''
 
<pre><nowiki>
 
<pre><nowiki>
upload_release.py nova 2014.1 --milestone=morlock-rc1
+
./repo_tarball_diff.sh $PROJECT master
 
</nowiki></pre>
 
</nowiki></pre>
  
==== Announce RC1 ====
 
* Email to openstack general ML
 
* Twitter
 
  
=== Further RC-X windows ===
+
'''Check bugs'''
==== Decision to open next RC window ====
+
* Look at the list of FixCommitted bugs, sanity-check that they were fixed during the period
* Consider m-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
+
'''Check for translations /requirements updates'''
* Target relevant bugs
+
* Branch should have a relatively recent translation update
====  Refine/fix bugs ====
+
* Branch should have a relatively recent requirements update
* Track bug fixes
+
 
* Facilitate backports
 
====  Get candidate tarball ====
 
* Wait for the *-tarball job run
 
* Note down tarball version
 
==== Get PTL signoff ====
 
* Get confirmation that RC is releasable from PTL
 
==== 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 ====
 
  
<pre><nowiki>
+
==== stable/$SERIES branch cut (switch master to next version) ====
git checkout milestone-proposed
 
git pull
 
git tag -s morlock-rcX
 
git push --tags gerrit
 
</nowiki></pre>
 
  
==== Upload release ====
+
'''Get PTL signoff'''
 +
* This should be done close to the RC1 cut
 +
* For Swift, check that the $FINALSWIFT changelog was committed to master
  
<pre><nowiki>
 
upload_release.py nova 2014.1 --milestone=morlock-rcX
 
</nowiki></pre>
 
  
==== Announce RC-X ====
+
'''Push new version to master'''
 +
* Prepare change which sets next version on master branch in setup.cfg (except for Swift which doesn't set preversions)
 +
* Get it approved by core and make sure it's merged
 +
* Note down SHA = stable/$SERIES cut commit id (the commit just before the version bump)
  
=== Final release ===
 
==== Create final release milestone page ====
 
* Create the 2014.1 final milestone page on Launchpad
 
==== Push all bugs and blueprints to final page ====
 
  
 +
'''Create stable/$SERIES branch from previous commit, wait for tarball, process FixCommitted bugs'''
 
<pre><nowiki>
 
<pre><nowiki>
consolidate_release_page.py nova morlock 2014.1
+
./rccut.sh $SHA $SERIES $PROJECT [$FINALSWIFT]
 
</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.
 
  
==== Push final version tag to MP ====
+
'''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 ====
  
<pre><nowiki>
+
'''Get PTL signoff'''
git checkout milestone-proposed
+
* Check that the branch contents are ready to go from PTL perspective (backport any last-minute bugfix)
git pull
 
git tag -s 2014.1
 
git push --tags gerrit
 
</nowiki></pre>
 
  
==== Promote last RC to release ====
 
  
 +
'''Tag, wait for tarball, check similarities and upload'''
 
<pre><nowiki>
 
<pre><nowiki>
promote_rc.py PROJECT 2014.1 rc2
+
./rcdelivery.sh $SERIES rc1 $PROJECT [$FINALSWIFT]
 
</nowiki></pre>
 
</nowiki></pre>
  
==== 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.
 
==== Announce release ====
 
* openstack-announce, openstack general ML
 
* Twitter etc.
 
=== Post-release ===
 
==== Update "Releases" wiki page ====
 
* http://wiki.openstack.org/Releases
 
==== Switch dev focus ====
 
* Switch dev focus to N and N status to under active development
 
* Switch M to current stable release, set release manager = openstack-stable-maint
 
* Switch M-1 to Obsolete
 
==== Clean rc-potential tags ====
 
* Search for https://bugs.launchpad.net/openstack/+bugs?field.tag=morlock-rc-potential
 
* Remove tag where found
 
==== 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 ====
 
  
<pre><nowiki>
+
'''Announce RC1'''
git checkout -t -b devnull origin/devnull
+
* Email to openstack general ML
vi nova/version.py # set to 2014.1.1
+
* Twitter
git commit -a
 
git review devnull
 
</nowiki></pre>
 
  
==== Create stable/folsom branch from devnull branch ====
 
* Go to review.openstack.org project branch admin panel
 
* New branch: "stable/morlock", Initial revision: "devnull"
 
==== Remove devnull and milestone-proposed branches ====
 
* 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 !) =
+
'''Unfreeze requirements'''
 +
* (should be doublechecked since we changed things here)
 +
* Create stable/$SERIES for openstack/requirements
 +
* Consider master branch unfrozen
 +
* Email to openstack dev ML
  
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 ===
+
==== Further RC-X windows ====
  
==== Missing files check ====
+
'''Decision to open next RC window'''
 +
* Consider $SERIES-rc-potential bugs and discuss with PTL if they warrant a respin
  
<pre><nowiki>
 
cd swift
 
tarball-repo-diff
 
</nowiki></pre>
 
  
 +
'''Create RC-X milestone page'''
 +
* Create the RC-X milestone page (short name = RCX) on Launchpad
 +
* Target relevant bugs
  
==== Tarball/version status ====
 
* Check that the swift-tarball jenkins jobs work properly and that they produce the right version numbers
 
  
==== Check bugs & blueprints ====
+
'''Refine/fix bugs'''
* Look at the list of FixCommitted bugs, sanity-check that they were fixed during the period
+
* Track bug fixes
* Check that the 1.8.2 milestone page is sane (all implemented blueprints)
+
* Facilitate backports
  
==== Get PTL signoff ====
 
* Check that the 1.8.2 changelog was committed to master
 
* Note down MP cut commit id
 
  
=== MP cut ===
+
'''Check for translations/requirements updates'''
 +
* Branch should have a relatively recent translation update. This requires a manual script to be run.
 +
* Requirements job (as proposed automatically when stable/* is created) should be merged if it exists
  
==== 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 ====
+
'''Get PTL signoff'''
* Use review.openstack.org admin panel to create branch
+
* Get confirmation that RC is releasable from PTL perspective
* Branch name is "milestone-proposed", initial revision is the MP cut commit id
 
  
==== Process FixCommitted bugs ====
 
  
 +
'''Tag, wait for tarball, check similarities and upload'''
 
<pre><nowiki>
 
<pre><nowiki>
./process-fixcommitted-bugs.py swift --milestone 1.8.2 --settarget 1.8.2 --fixrelease
+
./rcdelivery.sh $SERIES rcX $PROJECT [$FINALSWIFT]
 
</nowiki></pre>
 
</nowiki></pre>
  
  
==== Wait for tarball build ====
+
'''Announce RC-X'''
* Wait for the swift-tarball job run
+
* Email to openstack general ML
* Note down tarball version
+
* Twitter
  
=== QA for proposed release ===
 
  
==== Push FINAL=True commit to MP ====
+
==== Final release ====
* Prepare change which sets FINAL=True on milestone-proposed branch
 
* Approve and make sure it's merged
 
  
==== Get Final PTL signoff ====
+
'''Create final release milestone page'''
* Note down release commit id
+
* Create the $VERSION final milestone page on Launchpad
  
==== Wait for tarball build ====
 
* Wait for the swift-tarball job run
 
* Note down tarball version
 
  
=== Release publication ===
+
'''Push all bugs and blueprints to final page'''
 +
<pre><nowiki>
 +
./consolidate_release_page.py $PROJECT $SERIES $VERSION
 +
</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.
  
==== Push tag to MP ====
 
  
 +
'''Tag, wait for tarball, check similarities and upload'''
 
<pre><nowiki>
 
<pre><nowiki>
git checkout milestone-proposed
+
./rcdelivery.sh $SERIES final $PROJECT [$FINALSWIFT]
git pull
 
git tag -s 1.8.2
 
git push --tags gerrit
 
 
</nowiki></pre>
 
</nowiki></pre>
  
  
==== Upload milestone ====
+
'''Extra similarity check'''
 
 
 
<pre><nowiki>
 
<pre><nowiki>
upload_release.py swift 1.8.2
+
./similar_tarballs.sh $PROJECT $VERSION.rcX $VERSION
 
</nowiki></pre>
 
</nowiki></pre>
  
  
==== Announce release ====
+
'''Add release notes link to release page'''
* Email to openstack general, openstack-announce ML
+
* Add the "See http://wiki.openstack.org/ReleaseNotes/$SERIES" note to the Release note on the download page.
* Twitter
+
 
 +
 
 +
'''Announce release'''
 +
* openstack-announce, openstack general ML
 +
* Twitter etc.
 +
 
 +
 
 +
==== Post-release ====
 +
 
 +
'''Update wiki pages'''
 +
* http://wiki.openstack.org/Releases
 +
* https://wiki.openstack.org/wiki/Getting_The_Code
 +
 
 +
 
 +
'''Create openstack/openstack stable branch'''
 +
* This needs to be done before any stable branch is created
 +
* Go to review.openstack.org openstack/openstack branch admin panel
 +
* New branch: "stable/$SERIES", Initial revision: "HEAD"
 +
* Push update to .gitmodules switching all "." to "stable/$SERIES"
 +
 
 +
 
 +
'''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'''
 +
* Search for https://bugs.launchpad.net/openstack/+bugs?field.tag=$SERIES-rc-potential
 +
* Remove tag where found
 +
 
 +
 
 +
'''Enable stable/$SERIES'''
 +
* (should be doublechecked since we changed things here)
 +
* Add stable/$SERIES periodic jobs, example for Icehouse https://review.openstack.org/115933
 +
 
  
=== Post-milestone ===
+
'''Push .1 version to stable/$SERIES branch'''
 +
<pre><nowiki>
 +
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
 +
</nowiki></pre>
  
==== Remove milestone-proposed branch ====
+
NB: For Swift, it still makes sense to commit the the defaultbranch patch (even if you don't do the setup.cfg version bump)
* In review.openstack.org project branch admin panel
 

Latest revision as of 16:11, 13 June 2016

Caution icon.svg {{{header}}}

{{{body}}}

You can find all tools mentioned here in the openstack-infra/release-tools repository.

Development milestone publication

PROJECT=nova
MILESTONE=juno-3


Pre-flight checks

Missing files check (for all integrated projects doing the milestone)

./repo_tarball_diff.sh $PROJECT master


Milestone tag/publication (between Tuesday and Thursday)

All the integrated projects, as well as oslo-incubator and oslo.messaging, need to follow this process sometimes during the milestone publication window.

NB: The milestone.sh script special-cases oslo-incubator (where no tarball is published) and oslo.messaging (where no tag is pushed and no tarball is published) so you can just run the same commands with them.


Get PTL signoff (for all except oslo.messaging)

  • PTL confirms SHA for tag


Deferring blueprints and bugs

  • Move all incomplete blueprints to the next milestone ($MILESTONE should all be 'Implemented')
  • Move all incomplete bugs to the next milestone ($MILESTONE should all be 'Fix Committed'). You can use the following script:
./process_bugs.py $PROJECT --milestone $MILESTONE --settarget $NEXTMILESTONE


Tag, wait for tarball build, process FixCommitted bugs, check similarities and upload (if applicable)

./milestone.sh $MILESTONE $SHA $PROJECT


NB: for oslo.messaging $SHA is not used for tagging and is therefore ignored.


When all projects are done

Announce milestone

  • Email to openstack general ML
  • Twitter


Swift intermediary releases

PROJECT=swift
MILESTONE=1.8.1


Pre-flight checks

Missing files check

./repo_tarball_diff.sh swift master


Check bugs

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


RC1 tag

Get PTL signoff

  • Get RC1 $RCSHA from PTL
  • Check that the $MILESTONE changelog was committed to master


Deferring blueprints

  • Move all incomplete blueprints to the next milestone ($MILESTONE should all be 'Implemented')
  • Move all incomplete bugs to the next milestone ($MILESTONE should all be 'Fix Committed')


Tag RC1, wait for tarball build and process FixCommitted bugs

./swiftrc.sh $RC1SHA $MILESTONE


Announce candidate builds

  • Email to openstack general ML
  • Twitter


Further RCs

We generally hope that intermediary Swift releases won't generate multiple RCs, but shit sometimes happens. In that case we follow a manual process.


Set up proposed/$MILESTONE branch

  • Go to review.openstack.org and create a proposed/$MILESTONE branch with the same SHA as the RC1 tag
  • Backport fixes to this branch


Manually push new tag on that branch

git checkout master && git pull
git checkout -b proposed/$MILESTONE -t origin/proposed/$MILESTONE
git tag -m "Swift $MILESTONE-rc2" -s "${MILESTONE}rc2" $RC2SHA
git push gerrit ${MILESTONE}rc2


Release

Get PTL signoff

  • Get confirmation that SHA=RCxSHA


Tag, wait for tarball build, check similarities and upload

./milestone.sh $MILESTONE $SHA swift


Announce release

  • Email to openstack general ML & openstack announce.
  • Twitter
  • If a proposed/$MILESTONE branch was created, check that tags merged back to master and delete the branch (manually under review.openstack.org)


Final release

NB: The rccut.sh and rcdelivery.sh scripts special-case swift (where RC milestones are named differently) and oslo-incubator (where no tarball is published), so you can just run the same commands with them. They do not handle oslo.* libraries where tagging is external: bugs must be closed directly and stable branches created manually.

PROJECT=nova
SERIES=icehouse
FINALSWIFT=2.0.0
NEXTSERIES=juno


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


Check for translations /requirements updates

  • Branch should have a relatively recent translation update
  • Branch should have a relatively recent requirements update


stable/$SERIES branch cut (switch master to next version)

Get PTL signoff

  • This should be done close to the RC1 cut
  • For Swift, check that the $FINALSWIFT changelog was committed to master


Push new version to master

  • Prepare change which sets next version on master branch in setup.cfg (except for Swift which doesn't set preversions)
  • Get it approved by core and make sure it's merged
  • Note down SHA = stable/$SERIES cut commit id (the commit just before the version bump)


Create stable/$SERIES branch from previous commit, wait for tarball, process FixCommitted bugs

./rccut.sh $SHA $SERIES $PROJECT [$FINALSWIFT]


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

./rcdelivery.sh $SERIES rc1 $PROJECT [$FINALSWIFT]


Announce RC1

  • Email to openstack general ML
  • Twitter


Unfreeze requirements

  • (should be doublechecked since we changed things here)
  • Create stable/$SERIES for openstack/requirements
  • Consider master branch unfrozen
  • Email to openstack dev ML


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


Check for translations/requirements updates

  • Branch should have a relatively recent translation update. This requires a manual script to be run.
  • Requirements job (as proposed automatically when stable/* is created) should be merged if it exists


Get PTL signoff

  • Get confirmation that RC is releasable from PTL perspective


Tag, wait for tarball, check similarities and upload

./rcdelivery.sh $SERIES rcX $PROJECT [$FINALSWIFT]


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

./rcdelivery.sh $SERIES final $PROJECT [$FINALSWIFT]


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


Create openstack/openstack stable branch

  • This needs to be done before any stable branch is created
  • Go to review.openstack.org openstack/openstack branch admin panel
  • New branch: "stable/$SERIES", Initial revision: "HEAD"
  • Push update to .gitmodules switching all "." to "stable/$SERIES"


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


Enable stable/$SERIES


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

NB: For Swift, it still makes sense to commit the the defaultbranch patch (even if you don't do the setup.cfg version bump)