Jump to: navigation, search

ReleaseTeam/How To Release

Revision as of 13:34, 23 December 2014 by ThierryCarrez (talk | contribs) (Swift intermediary releases)

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.


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


proposed/$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 (or in swift/__init__.py)
  • Get it approved by core and make sure it's merged
  • Note down SHA = proposed/$SERIES cut commit id (the commit just before the version bump)


Create proposed/$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


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

./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 "Releases" wiki page


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


Create stable/$SERIES

  • Go to review.openstack.org project branch admin panel
  • New branch: "stable/$SERIES", Initial revision: "proposed/$SERIES"
  • Add stable/$SERIES periodic jobs, example for Icehouse https://review.openstack.org/115933


Remove proposed/$SERIES 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)