How to create and announce a Karaf release.

Required tools, practices and resources

Prepare

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

Your settings.xml should look like:

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

Staging the Release Candidate

  1. Grab the latest source
    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:
      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
      $ mvn deploy
      ...
      [INFO] [deploy:deploy]
      [INFO] Retrieving previous build number from apache.snapshots.https
      ...
      
  3. Prepare the release
    mvn release:clean
    mvn release:prepare
    
  4. Stage the release for a vote
    mvn release:perform
    
  5. Close the staging repository
  6. 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: "Karaf Developers List" <dev@karaf.apache.org>
Subject: [VOTE] Release Karaf version X.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/karaf-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.

Wait for the Results

From Votes on Package Releases:

Votes on whether a package is ready to be released follow a format similar to majority approval - except that the decision is officially determined solely by whether at least three +1 votes were registered. Releases may not be vetoed. Generally the community will table the vote to release if anyone identifies serious problems, but in most cases the ultimate decision, once three or more positive votes have been garnered, lies with the individual serving as release manager. The specifics of the process may vary from project to project, but the 'minimum of three +1 votes' rule is universal.

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

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

To: "Karaf Developers List" <dev@karaf.apache.org>
Subject: [RESULT] [VOTE] Release Karaf version X.Y.Z

Hi,

The vote has passed with the following result :

  +1 (binding): <<list of names>>
  +1 (non binding): <<list of names>>

I will copy this release to the Karaf dist directory and
promote the artifacts to the central Maven repository.

If the vote is unsuccessful, you need to fix the issues and restart the process - see Canceling the Release.
If the vote is successful, you need to promote and distribute the release - see Promoting the Release.

Canceling the Release

TODO

Promoting the Release

TODO

Update JIRA

TODO

Announcing the Karaf Release

TODO