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.
See also How To Contribute for more background on building Whirr.
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
- Upload the scripts to S3 for both the branch name (
0.1.0-incubating
directory) and the new trunk name (0.2.0-incubating-SNAPSHOT
directory). Set the world-readable ACL on all the files in the directory. If you don't have permission on the whirr S3 bucket ask another committer. - Commit these changes to trunk.
- Checkout the release branch
svn checkout https://svn.apache.org/repos/asf/incubator/whirr/branches/branch-X.Y
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
Build the binary archive:
mvn package assembly:assembly
TODO: verify this. better way to do it? How to get deployed to the repository automatically
The following command deploys the artifacts, checksums, and signatures (you will need to enter a GPG passphrase) to the Apache Staging repo.
TODO: document how to setup site.xml to enable server authentication
mvn deploy -Ppackage -Pdeploy -Pjavadoc
Login to https://repository.apache.org using your Apache SVN credentials. Click on Staging on the left. Then click on org.apache.whirr in the list of repositories. In the panel below you should see an open repository that is linked to your username and IP. Select this repository and click Close. This will close the repository from future deployments and make it available for others to view.
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:
TODO: update the following wget to also copy the binary archive and associated files
ssh people.apache.org mkdir ~/public_html/whirr-releases cd ~/public_html/whirr-releases wget -r -np -nd -Awhirr-*-src.tar.gz*,whirr-cli-*-incubating.jar* https://repository.apache.org/content/repositories/orgapachewhirr-[YOUR REPOSITORY ID]/org/apache/whirr/ rm *.asc.* # Remove spurious checksums for .asc files generated by Maven
Sanity Check
Download the artifacts and try them out by running the quick start instructions, for example.
Commit and Tag
Commit changes to subversion, and tag:
svn commit -m "Preparing for release X.Y.Z-incubating" svn copy https://svn.apache.org/repos/asf/incubator/whirr/branches/branch-X.Y https://svn.apache.org/repos/asf/incubator/whirr/tags/release-X.Y.Z-incubating -m "Whirr X.Y.Z-incubating release."
Run the Vote
This proceeds in two stages: first the Podling PMC votes, then if that passes, the Incubator PMC votes.
Here is an example email:
To: "Whirr Developers List" <whirr-dev@incubator.apache.org> Subject: [VOTE] Release Whirr version 0.1.0-incubating This is the first incubator release for Apache Whirr, version 0.1.0-incubating. It fixes the following issues: https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12315111&styleName=Html&projectId=12311110 *** Please download, test and vote by [3 working days after sending]. Note that we are voting upon the source (tag), binaries are provided for convenience. Source and binary files: http://people.apache.org/~tomwhite/whirr-releases/ Maven staging repo: https://repository.apache.org/content/repositories/orgapachewhirr-[YOUR REPOSITORY ID] The tag to be voted upon: http://svn.apache.org/repos/asf/incubator/whirr/tags/release-0.1.0-incubating Note that the Incubator PMC needs to vote upon the release after a successful PPMC vote before any release can be made official.
The release needs 3 +1 votes from the IPMC. Here is a sample email:
This is the first incubator release for Apache Whirr, version 0.1.0-incubating. We already received one binding IPMC +1 vote for the PPMC release vote on whirr-dev, so are looking for two more. PPMC release vote thread: http://mail-archives.apache.org/mod_mbox/incubator-whirr-dev/201009.mbox/%3CAANLkTiniO1np6d+gBnm4W6JjcG-6koe7X8beGkuXrQOT@mail.gmail.com%3E The issues fixed for 0.1.0-incubating https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12315111&styleName=Html&projectId=12311110 Source and binary files: http://people.apache.org/~tomwhite/whirr-releases/ Maven staging repo: https://repository.apache.org/content/repositories/orgapachewhirr-009 The tag to be voted upon: http://svn.apache.org/repos/asf/incubator/whirr/tags/release-0.1.0-incubating The vote is open for 72 hours. [ ] +1 [ ] +0 [ ] -1
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
ssh people.apache.org mv ~/public_html/whirr-releases/* /www/www.apache.org/dist/incubator/whirr/ rm /www/www.apache.org/dist/incubator/whirr/whirr-0.1.0-*
The last line is to remove the previous version, since only the latest version should be in the dist directory (older versions are archived automatically).
Login to https://repository.apache.org, click on Staging on the left. Select the repository that you closed earlier, and click Release, using a description like "Apache Whirr 0.1.0-incubating artifacts". This will make the artifacts publicly available.
Wait 24 Hours
It takes up to 24 hours for all the mirrors to sync, so don't announce the new release just yet.
Announce the Release
TODO: Add a news section to the website.
Send an email to announce@apache.org. E.g.
To: announce@apache.org Subject: [ANNOUNCE] Apache Whirr 0.1.0-incubating released The Apache Whirr team is pleased to announce the release of Whirr 0.1.0-incubating from the Apache Incubator. This is the first release of Apache Whirr, a set of libraries for running cloud services such as Apache Hadoop, ZooKeeper, and Cassandra. The release is available here: http://www.apache.org/dyn/closer.cgi/incubator/whirr/ The full change log is available here: https://issues.apache.org/jira/browse/WHIRR/fixforversion/12315111 We welcome your help and feedback. For more information on how to report problems, and to get involved, visit the project website at http://incubator.apache.org/whirr/ The Apache Whirr Team
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.