Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

  • Use Maven 2.0.11 or greater.
  • JDK 1.5 (We try to maintain compatibility)if version < 3.0.0, JDK 1.6 otherwise.
  • Install princexml 7.1 for manual generation.
  • Each and every release must be SIGNED
  • Your public key should also be cross-signed by other Apache committers (not required, but suggested)
  • Make sure you have all Apache servers defined in your settings.xml

Versioning

Sample versioning:

SNAPSHOT

RELEASE

1.0.0-SNAPSHOT

1.0.0

1.1.0-SNAPSHOT

1.1.0

1.1.1-SNAPSHOT

1.1.1

1.1.2-SNAPSHOT

1.1.2

2.0.0-SHAPSHOT

2.0.0

Prepare

To prepare and perform a release you must be at least at Apache Karaf Committer.

...

Code Block
<settings>
  ...
  <profiles>
    <profile>
      <id>release</id>
      <properties>
        <gpg.passphrase> <!-- YOUR KEY PASSPHRASE --> </gpg.passphrase>
      </properties>
    </profile>
  </profiles>
  ...
  <servers>
    <!-- To publish a snapshot of some part of Maven -->
    <server>
      <id>apache.snapshots.https</id>
      <username> <!-- YOUR APACHE SVN USERNAME --> </username>
      <password> <!-- YOUR APACHE SVN PASSWORD --> </password>
    </server>
    <!-- To stage a release of some part of Maven -->
    <server>
      <id>apache.releases.https</id>
      <username> <!-- YOUR APACHE SVN USERNAME --> </username>
      <password> <!-- YOUR APACHE SVN PASSWORD --> </password>
    </server>
    ...
  </servers>
</settings>

Community awareness message(s).

In the lead up towards a release candidate the user base should be given some notification.

In the case of dot zero release a new maintenance branch may be created with trunk continuing new development. The maintenance branch may be used for stabilization of the code base before a release candidate is cut. A notification message to the dev & user lists may be warranted.

Code Block

To: "Karaf Developers List" <dev@karaf.apache.org>
Subject: [NOTICE] Karaf trunk branched to create X.Y.0 maintenance branch. 

Hi,

We've just branched off X.Y.0 from trunk and started to stabilize it; latest artifacts are
available via apache-snapshot repo... simply add the following repo to your pom,
change the version to and provide us with feedback.

<<insert short description of the reason for branching here>>

Thanks,

-The Karaf team

A few weeks later the following message would be sent:

Code Block

To: "Karaf Developers List" <dev@karaf.apache.org>
Subject: [UPDATE] Karaf X.Y.0 release branch status.

Hi,

Thanks for all your feedback; we've fixed XX bugs/problems on the release branch
and will start a release about next week; Thanks again for all your contributions.

-The Karaf Team

Staging the Release Candidate

  1. Grab the latest source
    Code Block
    svn co https://svn.apache.org/repos/asf/karaf/trunk
    
  2. Prepare your POMs for release:
    1. make sure there is no snapshots in the POMs to be released
    2. make sure everything builds fine
    3. check that your POMs will not lose content when they are rewritten during the release process:
      Code Block
      mvn release:prepare -DdryRun
      
      Please diff the original pom.xml with the one named 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 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.
    4. publish a snapshot
      Code Block
      $ 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
  3. Prepare the release
    Code Block
    mvn release:clean
    mvn release:prepare
    
  4. Stage the release for a vote
    Code Block
    mvn release:perform
    
    • The release will automatically be inserted into a temporary staging repository for you, see the Nexus staging documentation for full details
    • You can continue to use mvn release:prepare and mvn release:perform on other sub-projects as necessary on the same machine and they will be combined in the same staging repository
  5. Close the staging repository
    • Login to https://repository.apache.orgImage Removed using your Apache SVN credentials. Click on Staging on the left. Then click on org.apache.karaf 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
  6. 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 Release) 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

...

The list of binding voters is available at http://karaf.apache.org/team.htmlImage Removed.

If the vote is successful, post the result to the dev list - for example:

...

  1. remove the release tag from Subversion (svn del ...)
  2. login to https://repository.apache.orgImage Removed using your Apache SVN credentials. Click on Staging on the left. Then click on org.apache.karaf in the list of repositories. In the panel below you should see a closed repository that is linked to your username and IP (if it's not yet closed you need to right click and select Close). Right click on this repository and select Drop.
  3. rollback the version in the pom.xml and commit any fixes you need to make

...

  1. copy the released artifacts to the Karaf dist directory (/x1/www/www.apache.org/dist/karaf) on people.apache.org
  2. delete the old release from the Karaf dist directory (it's archived)
  3. login to https://repository.apache.orgImage Removed with your Apache SVN credentials. Click on Staging. Find your closed staging repository, right click on it and choose Promote. Select the Releases repository from the drop-down list and click Promote.
  4. next click on Repositories, select the Releases repository and validate that your artifacts are all there
  5. update the news section on the website at news
  6. update the download page on the website at downloads to point to the new release.

...