Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • The 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
  • From Camel 2.10 onwards we will require to use Maven [3.0.2,3.1.0)
  • From Camel 2.11 onwards we will require to use Maven [3.0.4,3.1.0]
  • You may want to get familiar with the release settings in the parent apache POM.
  • Make sure you have installed Prince to be able to generate the Camel manual
  • Add your Prince installation bin directory to your PATH variable:

    Code Block
    languagetext
    PATH=$PATH:/usr/local/bin/prince
    

...

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.

Code Block
languagetext
umask 002

Creating the Camel Release

...

  1. Grab the latest source from Git

    Code Block
    languagetext
    git clone https://git-wip-us.apache.org/repos/asf/camel.git
    cd camel
    
  2. Verify headers with rat

    Code Block
    languagetext
    mvn -e org.apache.rat:apache-rat-plugin:check
    grep -e ' !?????' target/rat.txt -- will show any files without licenses
    
    Info

    Because of MRELEASE-812, you should use the following setting:

    Code Block
    languagetext
    LANG='en_US.UTF-8'
    
  3. Do a release dry run to check for problems

    Code Block
    languagetext
    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. Check also the generated signature files:

    Code Block
    languagetext
    cmueller$ gpg camel-core/target/camel-core-2.7.5-SNAPSHOT.jar.asc 
    gpg: Signature made Tue Jan 10 20:50:27 2012 CET using RSA key ID 2A239C2C
    gpg: Good signature from "Christian Mueller (CODE SIGNING KEY) <cmueller@apache.org>"
    

    When you like the results, clean up:

    Code Block
    languagetext
    mvn release:clean
    
  4. Prepare the release

    Code Block
    languagetext
    mvn release:prepare
    

    This will create the tag in svn and leave various stuff around locally to direct the perform phase.

    Info

    Note: If you're located in Europe then release:prepare may fail with 'Unable to tag SCM' and 'svn: No such revision X'. Wait 10 seconds and run

    Code Block
    languagetext
    mvn release:prepare
    

    again.

  5. Perform the release to the staging repo

    Code Block
    languagetext
    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 Repositories". Then select "org.apache.camel-xxx" in the list of repositories, where xxx represents your username and ip. Click "Close" on the tool bar above. 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.

...

  1. Close it by sending the RESULT to the mailing list.
  2. Promote the artifacts to the central repo. For this login to https://repository.apache.org using your Apache LDAP credentials. Click on "Staging Repositories". Select "org.apache.camel-xxx" in the list of repositories, where xxx represents your username and ip. Click "Release" on the tool bar above. This will promote all artifacts to the central maven repo. Enter the name and version of the artifact being released in the "Description" field and then click "Release". This will make it easier to identify it later.
  3. Perform a release in JIRA and create a new release version in JIRA
  4. 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.
  5. Copy the newly deployed distribution to Apache website:

    Code Block
    languagetext
    cd ${CAMEL_ROOT_DIR}/etc/scripts
    release-distro.sh <Camel version>
    

    Check the console output and finish this step manually after checking the artifacts.

  6. Copy the KEYS file by ssh into /www/www.apache.org/dist/camel/apache-camel/ on people.apache.org if you changed it
  7. Update the Download page to refer to the latest release distributions (search & replace the version numbers mostly)
  8. Upload the newly deployed schema and the manual to Apache:

    Code Block
    languagetext
    cd ${CAMEL_ROOT_DIR}/etc/scripts
    release-website.sh <Camel version>
    

    Check the console output and finish this step manually after checking the artifacts.

  9. Upload the javadocs to Apache, you need to checkout the files from "https://svn.apache.org/repos/infra/websites/production/camel/content/maven/"

    Info
    titleUsing SVN the first time on people.apache.org

    To be able to perform a checkout on people.apache.org from svn.apache.org, you have to trust the server certificate:

    No Format
    svn list "https://svn.apache.org/repos/infra/websites/production/camel/content"
    Error validating server certificate for 'https://svn.apache.org:443':
       The certificate is not issued by a trusted authority. Use the fingerprint to validate the certificate manually!
    Certificate information:
       Hostname: *.apache.org
       Valid: from Tue, 20 Dec 2011 00:00:00 GMT until Mon, 17 Feb 2014 23:59:59 GMT
       Issuer: Thawte, Inc., US
       Fingerprint: bc:5f:40:92:fd:6a:49:aa:f8:b8:35:0d:ed:27:5e:a6:64:c1:7a:1b
    (R)eject, accept (t)emporarily or accept (p)ermanently?
    
    1. Copy $CAMEL_ROOT/trunk/etc/scripts/release-website.sh to your home directory on people.apache.org
    2. Execute this script, e.g: ./release-website.sh 2.10.0
      1. It will download the XML Schema files and the Camel manual for the given release version
      2. At the end you have to commit these changes manually to SVN (simply follow the instructions)
  10. Update the Xml Reference page with a link to the XSD's
  11. Update the Manual page with a link to the PDF/HTML if it's a new major/minor version
  12. Mail the dev, user & announce lists
  13. Post a news entry in the wiki which links to the release page so folks can download it!
  14. perform a full export of the Camel WIKI sites to see your blog on the Camel index site. To do this, you have to remove the main.pageCache file in the content/cache sub directory:
    1. execute: svn rm https://svn.apache.org/repos/infra/websites/production/camel/content/cache/main.pageCache
  15. Add the release version number to the following spring.schemas file located in src/main/resources/META-INF directory of the following components:
    camel-cxf
    camel-spring
    camel-spring-integration
    camel-spring-security
  16. Have a beer! (smile)

...

  1. Create a branch from trunk remotely

    Code Block
    languagetext
    svn copy -m "create camel 2.10.x fix branch" https://svn.apache.org/repos/asf/camel/trunk/ https://svn.apache.org/repos/asf/camel/branches/camel-2.10.x
    
  1. Check out the remote branch in a new directory

    Code Block
    languagetext
    svn checkout https://svn.apache.org/repos/asf/camel/branches/camel-2.10.x 
    
  1. Initialize merge tracking for the new branch

    Code Block
    languagetext
    cd camel-2.10.x
    svnmerge.py init -f commit.txt https://svn.apache.org/repos/asf/camel/branches/camel-2.10.x
    svn ci -F commit.txt 
    
  1. Update the version number for the next patch release

    Code Block
    languagetext
    find ./ -name pom.xml |xargs perl -pi -e 's/2.11-SNAPSHOT/2.10.x-SNAPSHOT/g'
    svn ci -m "Update the pom version for next patch release"
    

...