Raw notes for release managers, or release monkeys if need be.

First, read BranchModel.

Second: release Swift first, Glance next, and Nova last.

We have two kinds of projects when it comes to release management:

This leads to two slightly different processes.

Release process

External release (Swift)

VER=1.4.0    # The version you want to release

When trunk is ready for a milestone, get the swift-core signoff by doing:

# In master swift/__init__.py, propose change from $VER to $VER+1 (leave 'False')
#No automation yet

# Swift-core signoffs on RBP by accepting that change

When that change hits trunk, trigger release process:

PREVCOMMIT=abc0de..         # Last master commit before the one that just hit

# Make sure !FixCommitted bugs were actually fixed in that milestone (?)
./process-fixcommitted-bugs.py swift --milestone $VER --check

# Create milestone-proposed branch from PREVCOMMIT
#Not automated yet
#Go to https://review.openstack.org/ and sign in
#Select Admin, Projects, then the project and Branches
#Enter milestone-proposed in the Branch Name field, and PREVCOMMIT as the Initial Revision
#Press Create Branch

# Target all !FixCommitted bugs to $VERSION milestone and !FixRelease them
./process-fixcommitted-bugs.py swift --milestone $VER --settarget $VER --fixrelease

# Wait for tarball generation at https://jenkins.openstack.org/job/swift-milestone-tarball/

# Wait for build at https://launchpad.net/~swift-core/+archive/milestone-proposed/+packages

# Call for testing

Select bugfixes should be pushed to milestone-proposed if need be. All those should be targeted to milestone and set to FixReleased when they hit. When milestone-proposed is ready for release:

# In milestone-proposed: in swift/__init__.py, change from False to True (leave $VERSION)
#Not automated yet

# Approve the merge on behalf of openstack-release
#Not automated yet

# Wait for tarball generation at https://jenkins.openstack.org/job/swift-milestone-tarball/

# Wait for build at https://launchpad.net/~swift-core/+archive/milestone-proposed/+packages

If everything went well, time to tag and release:

BUILD=20110922.r1293

# In swift milestone-proposed: Tag release: $VER
git checkout -t -b milestone-proposed origin/milestone-proposed
git pull
git tag -s $VER
git push --tags gerrit

# Release $VER with resulting tarball
./upload_release.py swift $VER $BUILD

# Trigger rebuild of final version in PPA
./reupload_with_new_version.py swift-core/milestone-proposed swift $VER

# Wait for build at https://launchpad.net/~swift-core/+archive/milestone-proposed/+packages

# Push to release PPA
./sync_ppas.py swift-core/milestone-proposed swift-core/release

# Wait for publication at https://launchpad.net/~swift-core/+archive/release/+packages

# Send email to mailing-list

Internal milestone release

For Nova, translations should be reasonably current:

(Translations merge is disabled for now)

When trunk is ready for a milestone:

PROJECT=nova       # Project to release
VER=2012.1     # Current dev cycle
MILESTONE=essex-1  # Milestone to release (=VER for release)
MSTONE=e1          # Short name for $MILESTONE
NEWMSTONE=e2       # Short name for new milestone

# Make sure !FixCommitted bugs were actually fixed in that milestone (?)
./process-fixcommitted-bugs.py $PROJECT --milestone $MILESTONE --check

# Bump milestone in Jenkins
#Not automated yet
#Jenkins:common-bump-milestone set trunk to $NEWMSTONE (keep $MILESTONE for release)

Only for final release:

# Race condition: this must be the first commit of $NEWMSTONE !
# In master $PROJECT/version.py, propose change from $VER to $VER+1 (leave 'False')
#No automation yet

# $PROJECT-core signoffs on RBP  by accepting the branch

Then:

# In milestone-proposed, merge from $REV of trunk
#Not automated yet
#Go to https://review.openstack.org/ and sign in
#Select Admin, Projects, then the project and Branches
#Enter milestone-proposed in the Branch Name field, and HEAD as the Initial Revision
#Press Create Branch

# Target all !FixCommitted bugs to $MILESTONE milestone and !FixRelease them
./process-fixcommitted-bugs.py $PROJECT --milestone $MILESTONE --settarget $MILESTONE --fixrelease

# Wait for tarball generation at https://jenkins.openstack.org/job/$PROJECT-milestone-tarball/

# Wait for build at https://launchpad.net/~$PROJECT-core/+archive/milestone-proposed/+packages

# Call for testing

Select bugfixes should be pushed to milestone-proposed if need be. All those should be targeted to milestone. When milestone-proposed is ready for release:

Milestone process:

BUILD=20110727.r1143    # Look up latest milestone-proposed tarball name

# Bump milestone in Jenkins
#Not automated yet
#Jenkins:common-bump-milestone set release to $NEWMSTONE (keep $NEWMSTONE for trunk)

# In milestone-proposed: Tag release: $MILESTONE
git checkout -t -b milestone-proposed origin/milestone-proposed
git pull
git tag -s $MILESTONE
git push --tags gerrit

# Release $MILESTONE with corresponding tarball (using --into for client tarballs)
./upload_release.py [--into $LPPROJECT] $PROJECT $VER $BUILD $MILESTONE

# Rebuild final version in PPA
./reupload_with_new_version.py $PROJECT-core/milestone-proposed $PROJECT $VER~$MSTONE

# Wait for build at https://launchpad.net/~$PROJECT-core/+archive/milestone-proposed/+packages

# Push to milestone PPA
./sync_ppas.py $PROJECT-core/milestone-proposed $PROJECT-core/milestone

# Wait for publication at https://launchpad.net/~$PROJECT-core/+archive/milestone/+packages

# Send email to mailing-list

Final release process:

# In milestone-proposed: in $PROJECT/version.py, change from False to True (leave $VER)
#Not automated yet

# Wait for tarball generation at https://jenkins.openstack.org/job/$PROJECT-milestone-tarball/

# Wait for build at https://launchpad.net/~$PROJECT-core/+archive/milestone-proposed/+packages

# Note down last tarball build num
BUILD=20110727.r1143    # Look up latest milestone-proposed tarball name

# Bump milestone in Jenkins
#Not automated yet
#Jenkins:common-bump-milestone set release to $NEWMSTONE (keep $NEWMSTONE for trunk)

# In milestone-proposed: Tag release: $VER
git checkout -t -b milestone-proposed origin/milestone-proposed
git pull
git tag -s $VER
git push --tags gerrit

# Release $VERSION with corresponding tarball
./upload_release.py $PROJECT $VER $BUILD

# Rebuild final version in PPA
./reupload_with_new_version.py $PROJECT-core/milestone-proposed $PROJECT $VER

# Wait for build at https://launchpad.net/~$PROJECT-core/+archive/milestone-proposed/+packages

# Push to milestone PPA
./sync_ppas.py $PROJECT-core/milestone-proposed $PROJECT-core/milestone

# Wait for publication at https://launchpad.net/~$PROJECT-core/+archive/milestone/+packages

When all projects are done

# Create openstack-release PPA
#Not automated yet

# Push to openstack-release PPA
./sync_ppas.py nova-core/milestone-proposed glance-core/milestone-proposed \
               swift-core/milestone-proposed openstack-release/$VERSION

# Wait for publication at https://launchpad.net/~openstack-release/+archive/$VERSION/+packages

# Send email to mailing-list

Random Howtos

Tag

Release MILESTONE with TARBALL as MVERSION

Push a release to PyPI

Prerequisites:

Process:

Open new branch

Wiki: ReleaseTeam/HowToRelease (last edited 2012-03-08 18:41:04 by JamesBlair)