This page describes how to make a release of Whirr. It is based on a combination of the guide for Tapestry (thanks to the Tapestry team for sharing this!), and the Hadoop release process.
Create a Release Series Branch
This only needs doing if this is the first release in a series (X.Y.0).
- Update CHANGES.txt in trunk to replace
Trunk (unreleased changes)
withRelease X.Y.0 - YYYY-MM-DD
. Commit:svn commit -m "Preparing for release X.Y.Z-incubating"
- Create a branch for the release series:
svn copy https://svn.apache.org/repos/asf/incubator/whirr/trunk \ https://svn.apache.org/repos/asf/incubator/whirr/branches/branch-X.Y -m "Branching for X.Y releases"
- Add back
Trunk (unreleased changes)
to CHANGES.txt in trunk. - Bump the version number in trunk (the update-versions script mangles the whitespace in the root XML element):
for file in $(find . -name pom.xml); do sed -i "" -e "s/0.1.0-incubating-SNAPSHOT/0.2.0-incubating-SNAPSHOT/" $file; done
- Commit these changes to trunk.
Update the Release Branch
The version number in the release branch ends in -SNAPSHOT
, but we need to remove this for the release. For example, 0.1.0-incubating-SNAPSHOT
needs to be changed to 0.1.0-incubating
.
for file in $(find . -name pom.xml); do sed -i "" -e "s/0.1.0-incubating-SNAPSHOT/0.1.0-incubating/" $file; done
Run Tests
Run all the unit and integration tests (which means you should have cloud credentials to run on a cloud provider) with the following:
mvn clean verify -Pintegration -DargLine='-Dwhirr.test.provider=<cloud-provider> -Dwhirr.test.identity=<cloud-provider-user> -Dwhirr.test.credential=<cloud-provider-secret-key>'
Generate the Release Notes
JIRA has the ability to generate release notes automatically (this is why it is so important to keep the fix version number accurate).
https://issues.apache.org/jira/secure/ConfigureReleaseNote.jspa?projectId=12311110
Manually check this list for accuracy! I've repeatedly seen closed bugs that were not fixed (i.e., duplicate) marked with a fix version, so that they incorrectly show up in this list. Find those, edit them to remove the fix release (only actually fixed bugs should have a fix release) and re-run the report.
Select the correct version, in HTML format.
Paste the notes to the top of src/site/xdoc/release-notes.xml
Wrap the title ("Release Notes - Whirr - Version X.Y.Z-incubating") inside an <h1> element.
Build and Deploy Artifacts
The following command deploys the artifacts, checksums, and signatures (you will need to enter a GPG passphrase) to the staging repo at http://people.apache.org/~tomwhite/whirr-repo/ (TODO: update to use official snapshot repo described at http://www.apache.org/dev/publishing-maven-artifacts.html).
mvn deploy -Ppackage -Pdeploy -Pjavadoc
Once the vote on the release is approved, the files will be moved from there to the official Apache Maven repo.
Cleaning up
Maven generates spurious checksums for .asc files, so we need to delete them. (This should be fixed from Maven 2.3 onwards.) Log in to people.apache.org, and type:
find ~/public_html/whirr-repo -name \*.asc.\* | xargs rm
Copy Release Artifacts
The artifacts that end up in the distribution directory are the source distribution and the CLI uberjar (along with their checksums and signatures), so they need to be copied from the Maven repo to the release directory on people.apache.org so folks can vote on them:
mkdir ~/public_html/whirr-releases cp -p ~/public_html/whirr-repo/org/apache/whirr/whirr/X.Y.Z-incubating/whirr-*-src.tar.gz* ~/public_html/whirr-releases cp -p ~/public_html/whirr-repo/org/apache/whirr/whirr-cli/X.Y.Z-incubating/whirr-cli-*[0-9].jar* ~/public_html/whirr-releases
Commit and Tag
Commit changes to subversion, and tag:
svn copy -rHEAD https://svn.apache.org/repos/asf/incubator/whirr/trunk https://svn.apache.org/repos/asf/incubator/whirr/tags/release-X.Y.Z-incubating
Run the Vote
Roll Out
Assuming the vote passes, the release can be rolled out as follows:
Build and Deploy Site
mvn site-deploy
Move Artifacts into Place
TODO
Wait 24 Hours
It takes up to 24 hours for all the mirrors to sync, to don't go announcing the new release just yet.
Announce the Release
TODO: update website
Advance the Version Numbers
Add the Next Release to JIRA
Add the next version number (e.g. 0.2.0-incubating after 0.1.0-incubating) to JIRA using this link: https://issues.apache.org/jira/secure/project/ManageVersions.jspa?pid=12311110.
In JIRA, you should also Release the version you are releasing now.