You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

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.

  • each and every release must be SIGNED; your public key should be added to http://www.apache.org/dist/felix/KEYS (see Appendix A)
  • your public key should also be cross-signed by other Apache committers (not required, but suggested)
  • when preparing the release on Mac OS X, make sure you read Appendix B before continuing
  • make sure you have all Apache servers defined in your settings.xml

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
    • mvn release:prepare -DdryRun=true
    • diff the original pom.xml with the one called pom.xml.tag to see if the license or any other info has been removed. This has been known to happen if the starting <project> tag is not on a single line. The only things that should be different between these files are the <version> and <scm> elements. If there are any other changes, you must fix the original pom.xml file and commit before proceeding with the release
  3. publish a snapshot
    $ mvn deploy
    ...
    [INFO] [deploy:deploy]
    [INFO] Retrieving previous build number from apache.snapshots.https
    ...
    
    • if you experience an error during deployment like a HTTP 401 check your settings for the required server entries as outlined in the Prerequisites
    • be sure that the generated artifacts respect the Apache release rules: NOTICE and LICENSE files should be present in the META-INF directory within the jar. For -sources artifacts, be sure that your POM does not use the maven-source-plugin:2.0.3 which is broken. The recommended version at this time is 2.0.4
    • you should verify the deployment under the snapshot repository on Apache
  4. prepare the release
    mvn release:clean
    mvn release:prepare
    
    • preparing the release will create the new tag in SVN, automatically checking in on your behalf
  5. stage the release for a vote
    mvn release:perform
    
    • the release will automatically be inserted into a temporary staging repository for you, see the Nexus staging documentation for full details
  6. close the staging repository
    • login to https://repository.apache.org using your Apache SVN credentials. Click on Staging on the left. Then click on org.apache.felix in the list of repositories. In the panel below you should see an open repository that is linked to your username and IP. Right click on this repository and select Close. This will close the repository from future deployments and make it available for others to view. If you are staging multiple releases together, skip this step until you have staged everything
  7. verify the staged artifacts
    • if you click on your repository, a tree view will appear below. You can then browse the contents to ensure the artifacts are as you expect them. Pay particular attention to the existence of *.asc (signature) files. If you don't like the content of the repository, right click your repository and choose Drop. You can then rollback your release (see Canceling the Vote) and repeat the process
    • note the staging repository URL (especially the number at the end of the URL) you will need this in your vote email

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.
  • to get the JIRA release notes link, browse to the FELIX JIRA page, select Release Notes and choose the relevant sub-project release and format (HTML)
  • to get the list of issues left in JIRA, select the Open Issues tab on the main FELIX page, and select the relevant sub-project.

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.

  • No labels