Apache Felix Dependency Manager Release Guide This document describes how to do a source release. It is based on the Release FAQ [1] Prerequisites ============= 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: 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 ext.dmRelease parameter in release/build.gradle, if not already done, and commit. * check if release notes are up-to-date, in release/resources/changelog.txt. * in the changelog file, 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. Release the binary bundles ========================== first, release the bundles that are part of the dm binary distribution: $ gradle release This will generates some new releases in cnf/releaserepo. Commit the newly created releases and uncommit the previous ones. Create a tagged version ======================= Creating a tagged version of the sources can be done directly through svn (replace r by the actual release number, like "r1"): svn copy https://svn.apache.org/repos/asf/felix/trunk/dependencymanager https://svn.apache.org/repos/asf/felix/releases/org.apache.felix.dependencymanager-r -m "Release of Apache Felix Dependency Manager r" Staging a release candidate =========================== Staging a release starts by checking out a tagged version of the sources (replace r by the actual release number, like "r1"): svn co https://svn.apache.org/repos/asf/felix/releases/org.apache.felix.dependencymanager-r The next step is to build/test the software and create the release/staging/ directory (where the source/jars will be packaged): (replace r by the actual release number, like "r1") Use a Java8 JDK $ cd org.apache.felix.dependencymanager-r $ ./gradlew rat $ ./gradlew org.apache.felix.dependencymanager.annotation:jar $ ./gradlew jar $ ./gradlew test $ ./gradlew check - create the staging: $ ./gradlew makeStaging (this will create ./release/staging/ directory) Then you sign archives by invoking the following task: $ ./gradlew signStaging 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/felix 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@felix.apache.org list, for example (be sure to replace r with the correct release number, like "r1"): >>> To: "Felix Developers List" Subject: [VOTE] Release of Apache Felix Dependency Manager release r 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/felix/apache-felix-dependencymanager-r/ You can use this UNIX script to download the release and verify the signatures: http://svn.apache.org/repos/asf/felix/trunk/dependencymanager/release/check_staged_release.sh Usage: sh check_staged_release.sh r /tmp/felix-staging This script, unlike the original Felix check_stage_release.sh, will download staging from https://dist.apache.org/repos/dist/dev/felix 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/felix by invoking the following target: You can now get back to your felix-trunk bndtools workspace, and import the released bundles, in your "Release" repository. Once done, manually svn add the new released bundles, and svn remove the previous bundles (in cnf/releaserepo/...) $ ./gradlew promoteToRelease Cancelling the release ====================== $ ./gradlew deleteFromStaging [1] http://www.apache.org/dev/release.html [2] http://www.apache.org/dist/felix/KEYS