blob: 2545e810abb08587a5e63b21a8292d0cdab82fa1 [file] [log] [blame]
Apache Felix Dependency Manager Release Guide
This document describes how to do a source release. It is based on the Release FAQ [1]
To create a release you must:
* Have a Jdk8 (at least version 1.8.0_71) installed on your system;
* Have Subversion installed on your system;
* Have gpg installed on your system;
* Have a public key added to the keys file, and committed to [2]
* If you are using an http proxy, configure the following; for example:
export GRADLE_OPTS=" -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 ext.dmRelease parameter in release/build.gradle, if not already done, and commit.
* check if workspace and module changelogs are up-to-date.
* in the changelog files, also make sure that all bundles which are part of the release are all referenced (bundle names + versions).
* release the bundles that are part of the dm binary distribution.
* create a tagged version of the sources in preparation of the release candidate.
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"):
svn copy<n> -m "Release of Apache Felix Dependency Manager r<n>"
Staging a release candidate
Staging a release starts by checking out a tagged version of the sources (replace r<n> by the actual release number, like "r1"):
svn co<n>
The next step is to build/test the software and create the release/staging/ directory (where the source/jars will be packaged):
(replace r<n> by the actual release number, like "r1")
Use a Java8 JDK
$ cd org.apache.felix.dependencymanager-r<n>
$ ./gradlew rat
$ ./gradlew org.apache.felix.dependencymanager.annotation:jar
$ ./gradlew jar
$ ./gradlew test
$ ./gradlew check
$ ./gradlew release --no-daemon
The last command (gradlew release) will create the binary release artifacts in cnf/releaserepo/ directory.
- create the staging:
$ ./gradlew makeStaging --no-daemon
The above will create ./release/staging/ directory. Then you sign archives by invoking the following task:
$ ./gradlew signStaging --no-daemon
(you will be asked to enter your PGP key password; don't forget the --no-daemon option, else stdin won't be read)
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 and adding files to it can be done using "svnpubsub" which is taken care of by the following target:
$ ./gradlew commitToStaging --no-daemon
Voting on the release
Start a vote on the list, for example (be sure to replace r<n> with the correct release number, like "r1"):
To: "Felix Developers List" <>
Subject: [VOTE] Release of Apache Felix Dependency Manager release r<n>
We solved N issues in this release:
There are still some outstanding issues:
Staging repository:<n>/
You can use this UNIX script to download the release and verify the signatures:
sh r<n> /tmp/felix-staging
This script, unlike the original Felix, will download staging from instead of
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 by invoking the following target:
$ ./gradlew promoteToRelease --no-daemon
Cancelling the release
$ ./gradlew deleteFromStaging --no-daemon