ReleaseTeam/How To Release
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.
Contents
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
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
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
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
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
- Add the "See http://wiki.openstack.org/ReleaseNotes/$SERIES" note to the Release note on the download 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
- Search for https://bugs.launchpad.net/openstack/+bugs?field.tag=$SERIES-rc-potential
- Remove tag where found
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)