This page is currently under revision
This page describes the steps that a release manager needs to take to perform a release of Apache CloudStack.
(Thanks to the couchdb project for a great template to use for this procedural document!)
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.
Update your local git repo from the ASF repository:
Check out the release branch:
( or if you haven't already checked it out locally with remote tracking enabled: git checkout -b X.Y origin/X.Y )
Make sure your local copy exactly matches the remote repo:
Then run the source build script (Replacing the parameters: X.Y.Z.0=your official version number for the release; X.Y=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):
( optionally specifying your local directory layout - see build_asf.sh -h for details )
This will automatically commit (the -c) to the cloudstack dist dev folder (on SVN). This is the staging area for Apache CloudStack distributions.
Get the commit-sh to vote against for your VOTE email. This comes from the output of the command above. Example:
completed. use commit-sh of b25d27d80b62de3408041821aa99e68712ae2728 when starting the VOTE thread
A RC branch will have been created. When a vote is done you can either delete it or merge it back depending on the outcome.
Test the Build
Follow the instructions documented in your release branch's test procedures wiki page.
If your personal tests pass, you are ready to propose the release to the community.
Email the firstname.lastname@example.org mailing list, using the following template:
SUBJECT: [VOTE] Apache Cloudstack X.Y.Z
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.Y.Z
merge and push the release candidate branch into the release branch. Parts of this procedure is explained further on in more generic terms.
Keeping the branch around as GA-X.Y.Z is not strictly necessary. Neither is tagging the release as the commit-id is really the part that is voted on.
Run the version reset script setting the latest pom version numbers to be equal to the next bug-fix release for the branch (including SNAPSHOT). Example:
The release should have already been tagged in your local repo when you used the build_asf.sh script (the -t option). However, you need to push that tag once the VOTE passes:
find a JIRA administrator/PMC member to go to https://issues.apache.org/jira/plugins/servlet/project-config/CLOUDSTACK/versions and enter the release date for the version
Move the release artifacts into place (replace X.Y.Z with the release number, and replace Y.Y.Y with the previous release number):
Wait 24 hours for the mirrors to catch up.
Update http://cloudstack.apache.org/downloads.html to point to the new release, and add the older release to the archive list.
Remove the prior release from the release dist area (it's still archived):
For some releases, the CloudStack security team may be waiting for release announcement so they can simultaneously announce any security advisories related to the release.
After waiting 24 hours for the ASF mirrors to catch up, the release is ready to be announced. Send separate announcement emails to email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org and email@example.com. This is best done using your apache.org address, so that the announcement gets moderated through to the lists.
The contents of the message should have been discussed on firstname.lastname@example.org first.
Install subversion on your release environment (preferably Linux or OSX based).