2017-06-06

Performing a release requires several steps. This document describes each step, so everybody in the committer’s team should be able to perform the release procedure.

1. Tell the others you would proceed with the release procedure

first steps for the next release

Hi @ all,

If there are no objections, I'll start with the first steps for
the next release (review, documentation,...).
It would be great to start with the release procedure next week.

Best regards,
[name]

2. Check everything is ready

  • Check the jenkins builds.

  • Ensure all JIRA-tickets targeting the release are resolved. If not, get in contact with the ticket owner/assignee to check

    • if the ticket can be postponed for the next release

    • how long it takes to resolve it and if one can help.

3. Prepare the release

  • Create release notes and commit them to tamaya/readme/ (format ReleaseNotes-[version].html)

  • Create a release branch in git and switch to this branch:

3.1. Using the Release Plugin

For performing the release you can use the maven release plugin:

$ git checkout -b vote-tamaya-[release version]
$ export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=200m"
$ mvn release:prepare -DdryRun=true -DperformRelease=true
# optionally pass GPG params for signing with: -Darguments="-Dgpg.keyname=1336D3E6 -Dgpg.passphrase=XXXXXX"
# copy prepared workspace (to continue faster if an upload fails in the next step)
  • If something fails you may switch to the master branch, fix whatever is needed and rebase your release branch to accommodate the latest changes done.

  • On success you can check the release packages from dist/target.

  • If everything looks good you can proceed with the release:

$ export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=200m"
$ mvn release:prepare -DperformRelease=true
$ mvn release:perform -DperformRelease=true

3.2. Preparing the release without the Release Plugin

The release plugin is great, but in some cases it breaks even, when release:prepare -DdryRun=true was successful. Preparing the release vote without the release plugin is stright forward:

  • As described checkout a release branch of the current head

  • Then us maven and git commands to prepare the release:

$ git checkout -b vote-tamaya-[release version]
$ export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=200m"
$ mvn versions:set versions:commit -DnewVersion=[release version] -DperformRelease=true
# build the release locally and sign it with your certs
$ mvn clean install -DperformRelease=true -Dgpg.keyname=1336D3E6 -Dgpg.passphrase=XXXXXX
  • Check if everything is in place and correct, when finished you can tag and deploy the release…​

$ mvn deploy -DperformRelease=true -Dgpg.keyname=1336D3E6 -Dgpg.passphrase=XXXXXX
  • check the created commits including user-name and email

  • login to https://repository.apache.org/ and go to "Staging Repositories"

  • check the contents of the newly created tamaya staging repository

  • close the repository to let Nexus do its validations

  • On success:

  • push the release-branch to the git repo

$ git add -A
$ git commit -m "Release Prepare: Set release version."
$ git tag vote01-[release-version]
$ git push --tags

Finally open the next development version:

# example: newVersion=0.3-incubating-SNAPSHOT
$ mvn version:set versions:commit -DnewVersion=[development-version]
$ git add -A
$ git commit -m "Release Prepare: Open new development version."
  • Add the distribution artifacts to the dev repositories:

$ svn co https://dist.apache.org/repos/dist/dev/incubator/tamaya/
$ mkdir [version]
$ set RELEASE_HOME='pwd'/[version]
$ cd PROJECT_ROOT
$ cp DISCLAIMER $RELEASE_HOME
$ cp NOTICE $RELEASE_HOME
$ cp LICENCE $RELEASE_HOME
$ cp rat.txt $RELEASE_HOME
# Copy everything from
#  $STAGING_REPO/distribution/0.2-incubating/tamaya-distribution-[version]-distribution-* into $RELEASE_HOME
$ svn add [version]
$ svn commit --username <apacheId>

4. Start the vote

[VOTE] Release of Apache Tamaya [version]

Hi,

I was running the needed tasks to get the [version] release of Apache Tamaya out.
The artifacts are deployed to Nexus [1] (and [2]) and releases [4].

The tag is available at [3] and will renamed once the vote passed.

Please take a look at the artifacts and vote!

Please note:
This vote is a "majority approval" with a minimum of three +1 votes (see [5]).

------------------------------------------------
[ ] +1 for community members who have reviewed the bits
[ ] +0
[ ] -1 for fatal flaws that should cause these bits not to be released, and why..............
------------------------------------------------

Thanks,
[name]

[1] https://repository.apache.org/content/repositories/...
[2] https://repository.apache.org/content/repositories/org/apache/tamaya/tamaya-distribution/[version]/tamaya-[version]-source-release.zip
    https://repository.apache.org/content/repositories/org/apache/tamaya/tamaya-distribution/[version]/tamaya-[version]-bin-release.zip
[3] https://git1-us-west.apache.org/repos/asf?p=incubator-tamaya.git;a=commit;h=2910da468fce16210e6dd77d8ba23ddbdd434efe
[4] https://dist.apache.org/repos/dist/dev/incubator/tamaya/[release-version]
[5] http://www.apache.org/foundation/voting.html#ReleaseVotes
  • Announce the Vote

    • Create a short link to the release at http://s.apache.org (format Tamaya_[version])

    • Tweet about the vote via @TamayaConf

  • After 72 hours close the vote write a reult email, e.g.

[Result] (was: Re: [VOTE] Release of Apache Tamaya [version])

Thank you for voting!

X binding +1 votes (pmc):
[list]

Y non-binding +1 votes:
[list]

Z -1 votes
[list]
  • After the vote on the PPMC has been finished and is successful, repeat the voting process on the incubator mailing list.

5. Perform the release

If the binding majority approved the vote on both lists continue:

$ git branch -m vote01-tamaya-[release-version] tamaya-[release-version]
  • Add a release tag:

$ git tag -a tamaya-[release-version]
  • Merge master with the new prepared version:

$ git checkout master
$ git merge tamaya-[release-version]
$ git push origin tamaya-[release-version]
$ git push origin master
$ svn co https://dist.apache.org/repos/dist/release/incubator/tamaya/
$ mkdir [version]
# add and commit the artifacts (*source-release.zip, *bin-release.zip + asc, md5, sha1)
# use the artifacts from:
# http://repo1.maven.org/maven2/org/apache/tamaya/tamaya-distribution/[version]/

6. Updating the Tamaya Project Site

Basically the new site should be directly deployable, just execute

$ mvn site site:deploy

7. Announce the new version

Announce the new version on @TamayaConf and other social media channels. Also drop a short mail on the mailing list.