This is the new release process for Apache Felix, based on the updated Maven process

Prerequisites

To prepare or perform a release you MUST BE at least an Apache Felix Committer.

In the past we staged release candidates on our local machines using a semi-manual process. Now that we inherit from the Apache parent POM version 5, a repository manager will automatically handle staging for you. This means you now only need to specify your GPG passphrase in the release profile of your ${user.home}/.m2/settings.xml:

<settings>
  ...
  <profiles>
    <profile>
      <id>release</id>
      <properties>
        <gpg.passphrase> <!-- YOUR KEY PASSPHRASE --> </gpg.passphrase>
      </properties>
    </profile>
  </profiles>
  ...
</settings>

Everything else has been configured in the latest Felix parent POM:

  <parent>
    <groupId>org.apache.felix</groupId>
    <artifactId>felix-parent</artifactId>
    <version>1.2.0</version>
    <relativePath>../pom/pom.xml</relativePath>
  </parent>

Staging the Release Candidates

First prepare your POMs for release:

  1. make sure there are no snapshots in the POMs to be released
  2. check that your POMs will not lose content when they are rewritten during the release process
  3. publish a snapshot
    $ mvn deploy
    ...
    [INFO] [deploy:deploy]
    [INFO] Retrieving previous build number from apache.snapshots.https
    ...
    
  4. prepare the release
    mvn release:clean
    mvn release:prepare
    
  5. stage the release for a vote
    mvn release:perform
    
  6. close the staging repository
  7. verify the staged artifacts

Starting the Vote

Propose a vote on the dev list with the closed issues, the issues left, and the staging repository - for example:

To: "Felix Developers List" <dev@felix.apache.org>
Subject: [VOTE] Release Felix XXX version Y.Z

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://repository.apache.org/content/repositories/felix-staging-[YOUR REPOSITORY ID]/

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.

Canceling the Release

Promoting the Release

Appendix A

Appendix B: preparing releases on Mac OS X

When running the mvn release:prepare command on Mac OS X, you might see the following error:

[INFO] Executing: svn --non-interactive commit --file /tmp/maven-scm-802409492.commit --targets /tmp/maven-scm-18804-targets
[INFO] Working directory: /homedir/dev/felix/dependencymanager
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Unable to commit files
Provider message:
The svn command failed.
Command output:
svn: Commit failed (details follow):
svn: MKACTIVITY of '/repos/asf/!svn/act/4f11ad5d-9161-0410-b4dd-cb727141ea8c': authorization failed (https://svn.apache.org)

This is due to a bug in Subversion on the Mac, as described by Brett Porter in his blog. He proposes putting an "svn" script at the head of your path to fix the issue.

Appendix E: deploying bundles to the Felix OBR

If you're releasing bundles, you can also add them to the Felix Release OBR. To do this, execute the following command:

mvn clean install \
    org.apache.felix:maven-bundle-plugin:deploy \
    -DprefixUrl=http://repo1.maven.org/maven2 \
    -DremoteOBR=releases.xml \
    -DaltDeploymentRepository=apache.releases::default::scp://people.apache.org/www/felix.apache.org/obr

The http://felix.apache.org/obr/releases.xml page is automatically updated during the web site synchronization.
Note: the project building the bundle must use the maven-bundle-plugin and use a version superior or equal to 1.4.2.