Difference between revisions of "ReleaseTeam/How To Release"
m (→MP cut (switch master to next version)) |
|||
Line 145: | Line 145: | ||
./process_bugs.py $PROJECT --settarget=$NAME-rc1 --fixrelease | ./process_bugs.py $PROJECT --settarget=$NAME-rc1 --fixrelease | ||
</nowiki></pre> | </nowiki></pre> | ||
+ | |||
+ | ==== Set $NEXTSERIES as active development ==== | ||
+ | * Set $NEXTSERIES as the release udner development | ||
=== RC1 cut === | === RC1 cut === |
Revision as of 14:34, 12 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
(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
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
- 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 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
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
- For Swift, push change to swift/__init__.py which sets FINAL=True on milestone-proposed branch
- Note down milestone cut commit id
Milestone publication (Thursday)
Push tag to MP
git checkout -t -b milestone-proposed origin/milestone-proposed git pull git tag -s "$PUBVERSION" git push --tags gerrit
Wait for tarball build
- Wait for the $PROJECT-tarball job run to generate a $PROJECT-$PUBVERSION.tar.gz
Similarity check
- Check that this tarball is equivalent to the latest published $PROJECT-milestone-proposed.tar.gz
Upload milestone
./upload_release.py $PROJECT $VERSION --milestone=$MILESTONE # For swift: ./upload_release.py swift $VERSION
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 NEXTVERSION=2013.2 # or NEXTVERSION=1.8.1 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
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
- For Swift, check that the $VERSION changelog was committed to master
- Note down MP cut commit id
Push new version to master
- Prepare change which sets next version on master branch in setup.py (or in swift/__init__.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=$NAME-rc1 --fixrelease
Set $NEXTSERIES as active development
- Set $NEXTSERIES as the release udner development
RC1 cut
Get PTL signoff
- Check that the branch contents are ready to go from PTL perspective
Push rc1 tag to MP
git checkout -t -b milestone-proposed origin/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=$NAME-rc1
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 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=$NAME-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
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.
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-$VERSION.rcX.tar.gz
Publish release
./upload_release.py $PROJECT $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 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
- Search for https://bugs.launchpad.net/openstack/+bugs?field.tag=$SERIES-rc-potential
- Remove tag where found
Create stable/$SERIES
This step is not necessary for Swift.
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