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

Compare with Current View Page History

« Previous Version 41 Next »

How to create and announce a Camel release.

This release guide is based on the General guide for releasing Maven-based projects at Apache, so be sure to check it out before continuing and meet all prerequisites.

Note: Make sure that you are using JDK 6 as several camel components (like the Web Console for example) now require JDK 6

Prerequisites

To prepare or perform a release you MUST BE at least an Apache Camel committer.

  • artifacts for each and every release must be SIGNED; your public key should be added to the KEYS file
  • your public key must also be cross-signed by other Apache committers (this can be done at key signing parties at ApacheCon for instance)
  • make sure you have the correct maven configuration in ~/.m2/settings.xml
  • use Maven 2.2.1+ (Maven 2.1.x is known to produce wrong gpg pom signatures - MGPG-14)
  • you may want to get familiar with the release settings in the parent apache POM (currently version 8 is used).

Maven 2 Setup

Before you deploy anything to the maven repository using Maven 2, you should configure your ~/.m2/settings.xml file so that the file permissions of the deployed artifacts are group writable. If you do not do this, other developers will not able to overwrite your SNAPSHOT releases with newer versions. The settings follow the guidelines used by the Maven project. Please pay particular attention to the password encryption recommendations.

<settings>
  ...
  <servers>
    <!-- Per http://maven.apache.org/developers/committer-settings.html -->

    <!-- To publish a snapshot of some part of Maven -->
    <server>
      <id>apache.snapshots.https</id>
      <username> <!-- YOUR APACHE LDAP USERNAME --> </username>
      <password> <!-- YOUR APACHE LDAP PASSWORD --> </password>
    </server>
    <!-- To publish a website of some part of Maven -->
    <server>
      <id>apache.website</id>
      <username> <!-- YOUR APACHE LDAP USERNAME --> </username>
      <filePermissions>664</filePermissions>
      <directoryPermissions>775</directoryPermissions>
    </server>
    <!-- To stage a release of some part of Maven -->
    <server>
      <id>apache.releases.https</id>
      <username> <!-- YOUR APACHE LDAP USERNAME --> </username>
      <password> <!-- YOUR APACHE LDAP PASSWORD --> </password>
    </server>
    <!-- To stage a website of some part of Maven -->
    <server>
      <id>stagingSite</id> <!-- must match hard-coded repository identifier in site:stage-deploy -->
      <username> <!-- YOUR APACHE LDAP USERNAME --> </username>
      <filePermissions>664</filePermissions>
      <directoryPermissions>775</directoryPermissions>
    </server>

  </servers>
  ...
</settings>

It is also essential that you configure your umask to 2 on people.apache.org for non-interactive login. You can do that by including the snipped below in your .profile.

umask 002

Creating the Camel Release

The release plugin will prompt for a release version, tag and next release version. Use a three digit release version of the form: 2.x.x and for the tag use a string of the form: camel-2.x.x. The next version string should use the two digit from: 2.x-SNAPSHOT as this can be consistent for future SNAPSHOT releases.

  1. Grab the latest source from SVN
    svn co https://svn.apache.org/repos/asf/camel/trunk camel
    cd camel
    
  2. Verify headers with rat
    mvn -e rat:check
    grep -e ' !?????' target/rat.txt -- will show any files without licenses
    
  3. Do a release dry run to check for problems
    mvn release:prepare -DdryRun=true
    
    Check that you are happy with the results. The poms for the proposed tags will be in pom.xml.tag. When you like the results, clean up:
    mvn release:clean
    
  4. Prepare the release
    mvn release:prepare
    
    This will create the tag in svn and leave various stuff around locally to direct the perform phase.
  5. Perform the release to the staging repo
    mvn release:perform
    
  6. Close the staging repository
    Quote from the Maven release guide for Apache projects

    Login to https://repository.apache.org using your Apache LDAP credentials. Click on "Staging". Then click on "camel" 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. Enter the name and version of the artifact being released in the "Description" field and then click "Close". This will make it easier to identify it later.

    See the image in the original guide for more info.
  7. Verify staged artifacts
    Quote from the original guide

    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 the you don't like the content of the repository, right click your repository and choose "Drop". You can then rollback your release and repeat the process.
    Note the repository URL, you will need this in your vote email.

Testing the Camel Release Candidate

When folks need to test out a release candidate, the jars will not have been uploaded to the central Maven repo. This means that the example programs which use Maven will not automatically work and you need to follow the Testing a release candidate guidelines.

Manually updating files

The pom.xml files in etc and tests/camel-itest-karaf need to be manually updated with the Camel version number in the <parent> tag.

Announcing the Camel Release

  1. Perform a release in JIRA and create a new release version in JIRA
  2. There should be already a release notes page in the In Progress folder (if not create one based on the Camel x.y.z Release (template)). Edit it and change the number of fixed issues and update its parent to be the Download page. Now would be a good time to create a new release notes page for the next release based on the template mentioned before. It is useful and simpler to keep it up to date during the development cycle.
  3. Update the Download page to refer to the latest release distributions (search & replace the version numbers mostly)
  4. Update the Xml Reference page with a link to the HTML and XSD
  5. Copy the newly deployed camel-spring-X.Y.Z.xsd file to camel-spring.xsd here http://camel.apache.org/schema/spring/ by ssh into people.apache.org.
  6. Copy the newly deployed camel-blueprint-X.Y.Z.xsd file to camel-blueprint.xsd here http://camel.apache.org/schema/blueprint/ by ssh into people.apache.org.
  7. Update the Manual page with a link to the PDF
  8. Mail the dev & user lists
  9. Post a news entry in the wiki which links to the release page so folks can download it!
  10. perform a full auto-export plugin export of the wiki to static html to work around the bug with autoexport plugin not updating the index page when you post the news item
  • to run autoexport: you go to admin -> plugins -> auto-export-plugin -> configure plugin. Select ActiveMQ from the list, then click on Export Space(s). Be very careful so you don't mess up anyone else's wikis!
  1. Have a beer! (smile)
  • No labels