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

Compare with Current View Page History

« Previous Version 11 Next »

This document summarizes the steps of release procedure for Qpid Java Components

Pre-Requirements

The release procedure is based on Apache Release PolicyRelease Signing and Publishing of Maven Documents

PGP

Release artifacts needs to be signed. GNU Privacy Guard from OpenPGP is used to sign on Apache. Please, refer Release Signing about PGP public key cryptography. The document contains basic information about release signing and contains link to various resources about PGP public key cryptography and how to use GNU Privacy Guard to generate and sign the PGP keys. Install GNU Privacy Guard, generate keys following steps provided here and publish public keys

Maven

Maven is used to build and manage Qpid Java project. 3.x version of maven needs to be installed and setup the development environment as describedat Publishing of Maven Documents.

Please, note that repository id (server id) in setting xml should be apache.releases.https. Using different id would result in failures to publish release artifacts into staging maven repo.

Java

JDK 1.7 is required to compile java classes. Thus, install latest 1.7 JDK. 1.7.0_80 JDK was the latest at the moment of writing this document.

SVN

Sources are kept in SVN repo. Thus svn client is required

Major version release

  1. Checkout Qpid sources from trunk using svn client. Alternatively, git and git-svn can be used.

    svn co https://svn.apache.org/repos/asf/qpid/java/trunk qpid-java
    cd ./qpid-java
    
  2. Check that you can build using profile apache-release

    mvn clean install -Papache-release -DskipTests
    

    The build should finish successfully. The gpg plugin will prompt for the password of PGP  signing key.

  3. Run RAT tool to verify that all source files have license headers

    mvn  apache-rat:check
    

    Add license headers to the files which do not have one or update RAT excludes if required.

  4. Verify third party licenses

    mvn -Pdependency-check prepare-package
    
  5. Build alpha
    Alpha does not requires branching. Thus, it can be built using maven versions plugin to change version and revert it back after build and deploy, for example

    mvn versions:set -DnewVersion=6.0.0-alpha ; mvn clean install deploy -Papache-release ; mvn versions:revert
    
  6. The build is deployed into staging repository, which needs to be closed in order to be available. Log in into Apache Nexus UI, select the repository under "Staging Repository" and click Close button to close staging repository for any publishing of artifacts. After closing, a permanent link to the staging repository will be available.
  7. Send an email into users@qpid.apache.org about alpha availability with a link to the staging repository
  8. When beta is ready to be created and published, delete the staging repository by logging into Apache Nexus UI, selecting the repository and clicking "Drop" button.
  9. Check JIRA system for any unresolved JIRAs for the release and, if required, notify assigned developers to take actions on uncompleted JIRAs
  10. Cut the branch using release:branch. Please, refer maven release plugin documentation for more details

    mvn release:branch -DbranchName=6.0.x -DupdateBranchVersions=false -DupdateWorkingCopyVersions=true  -DautoVersionSubmodules=true
    
  11. Checkout branch sources, for example

    svn co https://svn.apache.org/repos/asf/qpid/java/branches/6.0.x
    cd 6.0.x
    
  12. Cut the tag and build the release build using maven:prepare

    mvn release:clean
    mvn release:prepare -Papache-release,java-mms.0-9  -DautoVersionSubmodules=true -DpreparationGoals=test
    

    Release plugin will ask about new release version, svn tag name and new development version. Please, add RC<number> suffix to the tag name.

    On successful execution an svn tag with a provided name will be created, the tag version will be set to the specified release version and development version on the branch will be changed to the provided one

  13. Stage the release for voting
    mvn release:perform -Papache-release,java-mms.0-9 -Darguments="-DskipTests"

    release:perform will build release artifacts and deploy them into staging repo.

  14. The build is deployed into staging repository, which needs to be closed in order to be accessible. Log into Apache Nexus UI, select the repository under "Staging Repository" and click Close button to close staging repository for any publishing of artifacts. After closing, a permanent link to the staging repository will be available.
  15. Build source release bundle, for example

     svn export https://svn.apache.org/repos/asf/qpid/java/tags/6.0.0 qpid-java-6.0.0
     tar cvfz qpid-java-6.0.0.tar.gz qpid-java-6.0.0/
     gpg -ab qpid-java-6.0.0.tar.gz 
     sha1sum qpid-java-6.0.0.tar.gz > qpid-java-6.0.0.tar.gz.sha1
     md5sum qpid-java-6.0.0.tar.gz > qpid-java-6.0.0.tar.gz.md5
    
  16. Copy source and binary bundles into qpid dev staging area at https://dist.apache.org/repos/dist/dev/qpid/java/<x.y.zRCb>
  17. Send an email into users@qpid.apache.org about RC availability with link to the staging repository and qpid dev staging area with source and binary bundles
  18. If RC is OK and voting passes, promote the artifacts from staging repository into the world by pressing Release button in Apache Nexus UI.
    Otherwise, drop staging repository and repeat steps 11-17 until voting passes.
  19. Update Qpid web site Qpid Java Component pages and publish new release documentation.

    The website readme has more detail about these steps.


       - Generate new release content

       - Add any additional notes desired to the generated release notes

       - Change current release version

       - Update release references in other parts of the site
  20. Mark release as released in JIRA and close any unresolved JIRAs if required
  21. Wait for 24 hours after closing the voting and send the release notification email into users@qpid.apache.org

Minor release procedure

Follow the steps 3-9 and 11-21 from Major release procedure on svn branch.

  • No labels