Versions Compared

Key

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

...

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

Pre-Requirements

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

...

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 keysupload public keys to keyservers . After publishing keys, login into https://id.apache.org and enter PGP key fingerprint(s), then the corresponding keys will within a few hours be made available under https://people.apache.org/keys/. Additionally, qpid project requires adding a public key into https://dist.apache.org/repos/dist/release/qpid/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 should be setup as describedat described at Publishing of Maven Documents.

...

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

SVN

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

...

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

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

    No Format
    mvn clean install -Papache-release -DskipTests
    

    The build should finish successfully. The  The gpg plugin will prompt for the password of PGP  signing key. If password is asked for every release artifact, then pgp2 should be configured to use. The easiest way to configure pgp2 is to add active profile with pgp plugin settings into settings.xml.

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

    No Format
    mvn  apache-rat:check
    

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

  4. Verify third party licenses

    No Format
    mvn -Pdependency-check prepare-package
    

    The check should finish successfully. Otherwise, dependencies with not complaint licenses should be resolved before taking next release step.

    When new dependencies are added or changed  into projects the dependency verification files needs to be updated. In order to do so run the command above with flag -Ddependency-change-verification=true

  5. Build alpha.

    1. Making an alpha build is optional and can be skipped if required. 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
    1. The following chain of maven commands can be used to build and deploy alpha into staging repo
      Example of building 6.0.0-alpha

      No Format
      mvn versions:set -DnewVersion=6.0.0-alpha ; mvn clean install deploy -Papache-release ; mvn versions:revert
      
    The
    1. maven versions plugin is used to change version and revert it back after build and deploy

    2. On successful completion the build is deployed into staging repository, which needs to be closed in order to be available. Log
    in
    1. into Apache Nexus UI, select the repository under "Staging Repository" and click Close button to close staging repository
    for any
    1. to prevent publishing of
    artifacts
    1. any new artifact. After closing, a permanent link to the staging repository will be available.
    2. Send an email into users@qpid.apache.org about alpha availability with a link to the staging repository
    When beta is ready to be created and published, delete the staging repository by
    1. .
    2.  Do not forget to delete staging repo after building RC or beta build. It requires logging into Apache Nexus UI, selecting the repository and clicking "Drop" button.
  6. Check JIRA system for any unresolved JIRAs for the release and , if required, notify assigned developers to take actions on uncompleted JIRAs
  7. Cut the branch using release:branch. Please, refer maven release plugin documentation for more details. For example, the following command was used to cut 6.0.x branch

    No Format
    mvn release:branch -DbranchName=6.0.x -DupdateBranchVersions=false -DupdateWorkingCopyVersions=true  -DautoVersionSubmodules=true
    

    As part of execution command above maven asks about new version of the trunk sources and changes the version to provided one.

  8. Build beta if required following instructions in step 5 on branched sources
  9. Build RC

    1. Checkout branch sources, for example, 6.0.x branch is checked out as below

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

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

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

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

    4. The
    build is deployed into
    1. staging maven repository
    , which
    1. needs to be closed
    in order to be accessible
    1. . 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.
    2. Build source release bundle, for example the following commands were used to build source bundle for 6.0.0RC5

      No Format
       svn export https://svn.apache.org/repos/asf/qpid/java/tags/6.0.
    0
    1. 0RC5 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
      
    2. Copy source and binary bundles and their signatures/checksum files into qpid dev staging area at https://dist.apache.org/repos/dist/dev/qpid/java
    /<x.y.zRCb>
    1. / under the sub-folder with the same name as tag. Binary bundles  and their signatures/checksum files need to be put into sub-folder with name binaries. (Not doing so would break the site).
    2. Send an email into users@qpid.apache.org about RC availability with

    link
    1. links to the maven staging repository and qpid dev staging area

    with
    1. folder containing source and binary bundles

  10. If RC is OK and voting passes, promote the publish release artifacts:
    1. promote maven staging artifacts from staging repository into the world by pressing Release button in Apache Nexus UI.
    2. rename RC tag and remove all previous RC tags. For example, for 6.


    Otherwise
    1. 0.0

      No Format
      svn mv https://svn.apache.org/repos/asf/qpid/java/tags/6.0.0RC5 https://svn.apache.org/repos/asf/qpid/java/tags/6.0.0 -m "Move tag 6.0.0RC5 into 6.0"
      svn rm https://svn.apache.org/repos/asf/qpid/java/tags/6.0.0RC4 -m "Delete 6.0.0RC4"
      svn rm https://svn.apache.org/repos/asf/qpid/java/tags/6.0.0RC3 -m "Delete 6.0.0RC3"
      svn rm https://svn.apache.org/repos/asf/qpid/java/tags/6.0.0RC2 -m "Delete 6.0.0RC2" 
      svn rm https://svn.apache.org/repos/asf/qpid/java/tags/6.0.0RC1 -m "Delete 6.0.0RC1"
    2. copy source and binary bundles and their signatures/checksum files form dev staging are into release distribution area. For example, the commands below copy dev 6.0.0-rc5 artifacts into final 6.0.0

      No Format
      svn co --depth files https://dist.apache.org/repos/dist/release/qpid qpid-dist-release
      cd ./qpid-dist-release/java
      svn cp https://dist.apache.org/repos/dist/dev/qpid/java/6.0.0-rc5 .
      svn mv 6.0.0-rc5 6.0.0
      svn commit -m "Publish 6.0.0 release artifacts" 

      If voting does not pass, resolve found issues, drop staging repository and repeat

    steps 11-17
    1. instructions from step 9 until voting passes.

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

    following instructions here.
    Java 8 could be required for latest fop/docbook dependencies. Here are sample commands how to do it

    No Format
    svn co https://svn.apache.org/repos/asf/qpid/site
    cd ./site
    make gen-$module-release RELEASE=6.0.0 SOURCE_RELEASE=6.0.x
    vim ./input/releases/6.0.0/release-notes.md # manually add release details and fix/enhancements/new feature JIRA table
    vim ./input/_transom_config.py              # Update the current release pointer
    vim ./input/releases/index.md               # Add current release, move the previous
    make render
    make check-links
    svn commit -m "Update site for Qpid Java release 6.0.0"

     

  12. Mark release as released in JIRA and close any unresolved JIRAs if required
  13. Wait for 24 hours after closing the voting and send the release notification email into users@qpid.apache.org

Minor release procedure

Follow the Execute steps 31-9 6 and 118-21 13 from Major release procedure on svn on  branch.

dependency-change-verification