| # Apache Ace Release Guide |
| |
| This document describes how to do a source release. It is based on the Apache |
| Development [Release FAQ] [1]. |
| |
| ## Prerequisites |
| |
| To create a release you must: |
| |
| * Have Subversion installed on your system; |
| * Have gpg installed on your system; |
| * Have a public key added to the [KEYS file] [2]; |
| * If you are using an http proxy, configure the following: |
| |
| export GRADLE_OPTS="-Dhttps.proxyHost=www.somehost.org -Dhttps.proxyPort=8080" |
| |
| Before you can start staging a release candidate, you must: |
| |
| * Make sure there are no dependencies on snapshots/unreleased versions; |
| * Increment the version parameter in build/build.gradle, if not already |
| done, and commit; |
| * Under Bndtools, release (only) the bundles that needs to be released |
| (using "Release workspace bundles" menu); |
| * Create a tagged version of the sources in preparation of the release |
| candidate. |
| |
| |
| ## Release only the necessary bundles |
| |
| Click on the Bndtools "Release workspace bundles", and release the bundles that |
| have been modified and need to be released. |
| |
| Do *not* release bundles that are not modified or do not need a release (such |
| as integration test bundles, i.e., all projects ending in `*.itest`). |
| |
| Once done, under the shell prompt, go to the `cnf/releaserepo/` directory, run |
| `svn remove` to remove the previous (old) versions of the released bundles, and |
| run `svn add` to add the just released bundles. |
| |
| Refresh the repositories using Bndtools, and commit all changes. |
| |
| |
| ## Create a tagged version |
| |
| Creating a tagged version of the sources can be done directly through svn |
| (replace `r<n>` by the actual release number, like "r1"): |
| |
| v=<version> \ |
| svn copy https://svn.apache.org/repos/asf/ace/trunk \ |
| https://svn.apache.org/repos/asf/ace/releases/$v \ |
| -m "Release of Apache Ace $v" |
| |
| |
| ## Staging a release candidate |
| |
| Staging a release starts by checking out a tagged version of the sources |
| (again, replace `<version>` by the actual release version, like "2.0.0"): |
| |
| v=<version> \ |
| svn co https://svn.apache.org/repos/asf/ace/releases/$v apache-ace-$v |
| |
| The next step is to build/test the software and create the `release/staging/` |
| directory (where the source/jars will be packaged, again, replace `<version>` |
| by the actual release number, like "2.0.0"): |
| |
| Use Java 7 as JDK |
| |
| $ cd apache-ace-<version> |
| $ ./gradlew rat |
| $ ./gradlew build runbundles export |
| |
| Create the staging directory and artifacts (this will create `./build/staging/` |
| directory containing the signed release archives): |
| |
| $ ./gradlew makeStaging |
| |
| You can upload the archives and the signatures to our development area, which |
| we use to stage this release candidate. This development area can be found at |
| `https://dist.apache.org/repos/dist/dev/ace` and adding files to it can be done |
| using "svnpubsub" which is taken care of by the following target: |
| |
| $ ./gradlew commitToStaging |
| |
| |
| ## Voting on the release |
| |
| Start a vote on the `dev@ace.apache.org` list, for example (be sure to replace |
| `<version>` with the correct release number, like "1.0.0"): |
| |
| To: "Ace Developers List" <dev@ace.apache.org> |
| Subject: [VOTE] Release of Apache Ace release r<n> |
| |
| Hi, |
| |
| We solved N issues in this release: |
| http://issues.apache.org/jira/... |
| |
| There are still some outstanding issues: |
| http://issues.apache.org/jira/... |
| |
| Staging repository: |
| https://dist.apache.org/repos/dist/dev/ace/apache-ace-<version>/ |
| |
| You can use this UNIX script to download the release and verify the signatures: |
| http://svn.apache.org/repos/asf/ace/trunk/build/check_staged_ace_release.sh |
| |
| Usage: |
| sh check_staged_ace_release.sh <version> /tmp/ace-staging |
| |
| This script, unlike the original check_staged_release.sh from Apache Felix, |
| will download staging artifacts from https://dist.apache.org/repos/dist/dev/ace |
| instead of http://repository.apache.org/content/repositories. |
| |
| Please vote to approve this release: |
| |
| [ ] +1 Approve the release |
| [ ] -1 Veto the release (please provide specific comments) |
| |
| This vote will be open for 72 hours. |
| |
| |
| ## Promoting the release: |
| |
| Move the artifacts from the development area to the final release location at |
| `https://dist.apache.org/repos/dist/release/ace` by invoking the following |
| target: |
| |
| $ ./gradlew promoteToRelease |
| |
| Notify the `dev@ace.apache.org` list about the successful promotion and notify |
| the `users@ace.apache.org` list that a new release is available. |
| |
| ### Update the JIRA issues |
| |
| Close all issues in JIRA that were fixed as part of the release and create a |
| new version for the next release. This probably means that you need to rename |
| the existing `next` version to the released version of ACE and recreate a new |
| `next` version. |
| |
| |
| ## Cancelling the release |
| |
| To cancel the release for whatever reason, run: |
| |
| $ ./gradlew deleteFromStaging |
| |
| And notify the `dev@ace.apache.org` list to make everybody aware of this. |
| |
| ## References |
| |
| [1]: http://www.apache.org/dev/release.html |
| [2]: http://www.apache.org/dist/ace/KEYS |