


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; for example:

  export GRADLE_OPTS="-Dhttps.proxyHost=www.somehost.org -Dhttps.proxyPort=8080"
  export http_proxy=www.somehost.org:8080
  export https_proxy=www.somehost.org: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"):

git tag -a org.apache.felix.dependencymanager-r<n> -m "Release of Apache Felix Dependency Manager r<n>"
git push origin org.apache.felix.dependencymanager-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"):

git clone -–depth 1 -b org.apache.felix.dependencymanager-r<n> http://gitbox.apache.org/repos/asf/felix-dev.git felix-dev-org.apache.felix.dependencymanager-r<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 felix-dev-org.apache.felix.dependencymanager-r<n>/dependencymanager
$ ./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 
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 --no-daemon

Voting on the release
=====================

Start a vote on the dev@felix.apache.org list, for example (be sure to replace r<n> with the correct release number, like "r1"):

>>>
To: "Felix Developers List" <dev@felix.apache.org>
Subject: [VOTE] Release of Apache Felix Dependency Manager release r<n>

I would like to call for a vote on the Dependency Manager top level release r<n>

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<n>/

You can use this UNIX script to download the release and verify the signatures:

https://github.com/apache/felix-dev/blob/master/dependencymanager/release/check_staged_release.sh

Usage:

      sh check_staged_release.sh r<n> /tmp/felix-staging

This script, unlike the original Felix check_stage_release.sh, is specific
to the Dependency Manager release process (see FELIX-4818) and will
download staging from https://dist.apache.org/repos/dist/dev/felix instead
of http://repository.apache.org/content/repositories.

To rebuild the DM binaries from the source, jdk8 must be used, and you can refer to:

https://github.com/apache/felix-dev/blob/master/dependencymanager/release/resources/src/README.src

Please cast your votes 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:

$ ./gradlew promoteToRelease --no-daemon

Cancelling the release
======================

$ ./gradlew deleteFromStaging --no-daemon


[1] http://www.apache.org/dev/release.html
[2] http://www.apache.org/dist/felix/KEYS
