Jump to: navigation, search

ReleaseTeam/How To Release

Revision as of 14:21, 14 January 2014 by ThierryCarrez (talk | contribs)

Raw notes for release monkeys in case I end up under a bus. You can find all tools mentioned here in the openstack-infra/release-tools repository.


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, wait for tarball build and process FixCommitted bugs

./mpcut.sh $SHA $MILESTONE $PROJECT


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

  • Get final release signoff from PTL, if available...


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, wait for tarball, process FixCommitted bugs

./mpcut.sh $SHA $NAME-rc1 $PROJECT


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

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