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

Compare with Current View Page History

« Previous Version 20 Next »

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) with Release 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 Apache Staging repo.

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. Right click on this repository and select 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:

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.

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/trunk https://svn.apache.org/repos/asf/incubator/whirr/tags/release-X.Y.Z-incubating -m "Whirr X.Y.Z 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:

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.

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.

  • No labels