blob: 93c17befd9add84302794392aca5a1d646741342 [file] [log] [blame] [view]
# 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