You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 13 Next »

This page describes the steps that a release manager needs to take to perform a release of Apache CloudStack (Incubating).

(Thanks to the couchdb project for a great template to use for this procedural document!)

Checklist

  1. Ensure that you are working on the correct branch.  The CloudStack community has adopted a branch-before-release strategy for release branches.
  2. Confirm that the information in README.md is current
  3. Confirm that the information in INSTALL.md is current
  4. Update the CHANGES file with the critical changes introduced in the release (Be sure to highlight any changes the break backward compatibility)
  5. Remove "version has not been released" warnings from the CHANGES file
  6. Ensure that the CHANGES file in your release branch is synced with the version in the master branch (which may have a future release already in it)
  7. Confirm that there is a jenkins build process for the release branch, and that all associated jobs are succeeding.

Getting Community Concensus

Prior to an official vote, start a thread on the cloudstack-dev mailing list, specifically asking for comments on the project's readiness to cut a release.

Once it appears that any outstanding blockers have been addressed, you can proceed to the next step.

Preparing a Release

Update your local git repo from the ASF repository:

git fetch origin

Check out the release branch:

git checkout X.X.X

( or if you haven't already checked it out locally with remote tracking enabled: git checkout -b X.X.X origin/X.X.X )

Make sure your local copy exactly matches the remote repo:

git reset --hard HEAD
git clean -qfxd
git rebase origin/X.X.X

Grab the current tree-sh:

git show HEAD | head -n 1 | cut -d " " -f 2

Then run the source build script (Replacing the parameters: X.X.X=your official version number for the release without -incubating; B.B=the branch (can be master) that the release is coming from; CCCC=the GPG Key to sign both the artifacts and the git tag with):

tools/build/build_asf.sh -v X.X.X -b B.B -t -u CCCC -k CCCC

( optionally specifying your local directory layout - see build_asf.sh -h for details )

You can now upload the source release artifacts to the dev distribution svn folder.  

For the first round vote (replace X.X.X with the release number):

# svn co https://dist.apache.org/repos/dist/dev/incubator/cloudstack/candidates
# cd candidates
# svn mkdir X.X.X-incubating
# cp ~/cs-asf-build/* X.X.X-incubating/.
# svn add X.X.X-incubating
# svn commit -m "Uploading artifacts for X.X.X-incubating voting"

For any rounds after the first round (assumes you already have a local copy of the svn dir):

# cd candidates/X.X.X-incubating
# cp ~/cs-asf-build/* .
# svn commit -m "Uploading artifacts for X.X.X-incubating voting, Y round"

Test the Build

Follow the instructions documented here:  CloudStack 4.0 test procedure (TODO: this test procedure document should be release number agnostic)

If your personal tests pass, you are ready to propose the release to the community.

Managing the Vote(s)

cloudstack-dev VOTE

Email the cloudstack-dev mailing list, using the following template:

SUBJECT: [VOTE] Apache Cloudstack X.X.X-incubating

MESSAGE:

Hi All,

I've created a X.X.X-incubating release, with the following artifacts up for a vote:

Git Branch and Commit SH:
https://git-wip-us.apache.org/repos/asf?p=incubator-cloudstack.git;a=shortlog;h=refs/heads/X.X.X
Commit: XXXXXXXXXXXXXXXXX

List of changes:
https://git-wip-us.apache.org/repos/asf?p=incubator-cloudstack.git;a=blob_plain;f=CHANGES;hb=refs/heads/X.X.X

Source release (checksums and signatures are available at the same
location):
http://people.apache.org/~YOU/cloudstack/dist/releases/X.X.X/

PGP release keys (signed using XXXXXXXX):
https://git-wip-us.apache.org/repos/asf?p=incubator-cloudstack.git;a=blob_plain;f=KEYS;hb=refs/heads/X.X.X

Vote will be open for 72 hours.


For sanity in tallying the vote, can PPMC and IPMC members please be sure to indicate "(binding)" with their vote?

[ ] +1  approve
[ ] +0  no opinion
[ ] -1  disapprove (and reason why)

cloudstack-dev Voting Results

After 72 hours, the vote can be closed.  

If (after tallying the vote) the binding +1 votes are not in the majority, the issues noted need to be addressed and process starts again. You need to send out a results email (or a less formal abort email) for the VOTE thread.

If the vote passes, then send a [RESULTS] vote to the dev list.  Template below:

SUBJECT: [RESULT][VOTE] Apache CloudStack X.X.X-incubating

MESSAGE:

Hi all,

After 72 hours, the vote for CloudStack X.X.X-incubating [1] *passes* with
Z PPMC + Z non-PPMC votes.

+1 (PPMC / binding)
* person

+1 (non binding)
* person

0
none

-1
none

Thanks to everyone participating.

I will now submit the release for voting on the general@incubator.apache.org

[1] URL TO CLOUDSTACK-DEV VOTE THREAD

general@incubator.apache.org VOTE

Initiate the vote thread on general@incubator.apache.org.  It's useful for the incubator folks to see a list of the IPMC members that voted on the initial vote thread.  Template below:

SUBJECT: [VOTE] Apache CloudStack X.X.X-incubating

MESSAGE:

Hi All,
I've created a X.X.X-incubating release, with the following artifacts up for a vote:

Git Branch and Commit SH:
https://git-wip-us.apache.org/repos/asf?p=incubator-cloudstack.git;a=shortlog;h=refs/heads/X.X.X
Commit: XXXXXXXXXXXXXXXXX

List of changes:
https://git-wip-us.apache.org/repos/asf?p=incubator-cloudstack.git;a=blob_plain;f=CHANGES;hb=refs/heads/X.X.X

Source release (checksums and signatures are available at the same
location):
http://people.apache.org/~YOU/cloudstack/dist/releases/X.X.X/

PGP release keys (signed using XXXXXXXX):
https://git-wip-us.apache.org/repos/asf?p=incubator-cloudstack.git;a=blob_plain;f=KEYS;hb=refs/heads/X.X.X

This has been voted through on the cloudstack-dev@incubator.apache.org
mailing list [1], and now requires a vote on general@incubator.apache.org

Votes already cast (on cloudstack-dev):

+1 (PPMC / binding)
* name of PPMC member
* name of PPMC member that is also an (IPMC member)

+1 (non binding)
* committer or other community member

Vote will be open for 72 hours.

[ ] +1  approve
[ ] +0  no opinion
[ ] -1  disapprove (and reason why)

Best regards.

[1] URL TO CLOUDSTACK-DEV VOTE THREAD

general@incubator.apache.org voting results

Again, after 72 hours, tally the results. If (after tallying the vote) the binding +1 votes are not in the majority, the issues noted need to be addressed and process starts again. You need to send out a results email (or a less formal abort email) for the VOTE thread. If it passes, send out a results email.

SUBJECT: [RESULT][VOTE] Apache CloudStack X.X.X-incubating

MESSAGE:

Hi all,

After 72 hours, the vote for CloudStack X.X.X-incubating [1] *passes* with
Z IPMC + Z non-IPMC votes.

+1 (IPMC / binding)
* person

+1 (non binding)
* person

0
none

-1
none

Thanks to everyone participating.

I will now submit the release for voting on the general@incubator.apache.org

[1] URL TO GENERAL@INCUBATOR VOTE THREAD

Publish the Release

Move the release artifacts into place (replace X.X.X with the release number, and replace Y.Y.Y with the previous release number):

# svn mv https://dist.apache.org/repos/dist/dev/incubator/cloudstack/candidates/X.X.X-incubating https://dist.apache.org/repos/dist/release/incubator/cloudstack/releases/
# svn co https://dist.apache.org/repos/dist/release/incubator/cloudstack
# cd releases
# svn cp Y.Y.Y-incubating/README.html X.X.X-incubating/README.html
# svn cp Y.Y.Y-incubating/HEADER.html X.X.X-incubating/HEADER.html
# vi X.X.X-incubating/HEADER.html
# vi X.X.X-incubating/README.html

Edit references to the release number and save the changes.

# svn rm Y.Y.Y-incubating
# svn commit -m "Uploading artifacts for X.X.X-incubating release"

Wait 24 hours for the mirrors to catch up.

Update http://incubator.apache.org/cloudstack/downloads.html to point to the new release.

Announcing the Release

After waiting 24 hours for the ASF mirrors to catch up, the release is ready to be announced. Send an announcement email to announce@apache.org, cloudstack-dev@incubator.apache.org and cloudstack-users@incubator.apache.org.

The contents of the message should have been discussed on cloudstack-dev first.

  • No labels