Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Reverted from v. 67

...

  1. Checkout Qpid sources

    1. For new major/minor release; checkout sources from trunk

      No Format
      git clone https://gitbox.apache.org/repos/asf/qpid-broker-j.git qpid-broker-j
      cd ./qpid-broker-j
      


    2. For bugfix release

      1. if branch does not exist, cut the branch  and set the correct version in maven

        No Format
        git clone https://gitbox.apache.org/repos/asf/qpid-broker-j.git qpid-broker-j
        cd ./qpid-broker-j
        git checkout -b 7.1.x 7.1.0
        git push -u origin 7.1.x
        mvn versions:set -DnewVersion=7.1.1-SNAPSHOT ; mvn clean install -Papache-release ; mvn versions:commit
        git commit -m "Set version to 7.1.1-SNAPSHOT"
        git push


      2. if branch exists, checkout branch sources

        No Format
        git clone -b 7.1.x https://gitbox.apache.org/repos/asf/qpid-broker-j.git 7.1.x
        cd 7.1.x
        


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

    No Format
    mvn  apache-rat:check


  3. Check that images don't have a non-free ICC profile.

    Code Block
    languagebash
    find . -regextype posix-extended -iregex '.*\.(jpg|png|ico|tif)' -exec sh -c 'identify -verbose "$0" | grep -i copyright && echo "$0"' {} \;


  4. Check that build completes successfully using profile apache-release

    No Format
    mvn clean install -Papache-release -DskipTests
    

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

    Code Block
    languagexml
    title~/.m2/settings.xml
    collapsetrue
    <settings>
      <servers>    
        <server>
          <id>apache.snapshots.https</id>
          <username>YOUR_APACHE_SVN_USERNAME</username>
          <password>YOUR_APACHE_SVN_PASSWORD</password>
        </server>
        <server>
          <id>apache.releases.https</id>
          <username>YOUR_APACHE_SVN_USERNAME</username>
          <password>YOUR_APACHE_SVN_PASSWORD</password>
        </server>
    
        <!-- optional -->
        <server>
          <id>gpg.passphrase</id>
          <passphrase>{XXXX}</passphrase>
        </server>
     </servers>
      
      <profiles>
        <profile>
          <id>apache-release</id>
          <properties>
            <gpg.keyname>A2889D83</gpg.keyname>
            <gpg.executable>gpg2</gpg.executable>
          </properties>
        </profile>
      </profiles>
    </settings>


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

  6. Verify third party licenses

    No Format
    mvn -Pdependency-check prepare-package -DskipTests
    

    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 the dependency verification files needs to be updated. In order to do so, run the command above with flag -Ddependency-change-verification=true

  7. Build alpha/beta (optional).

    1. Making an alpha/build build is optional and can be skipped if required. Alpha/Beta does not requires branching. The following chain of maven commands can be used to build and deploy alpha into staging repo
      Example of building 7.0.0-alpha

      No Format
      mvn versions:set -DnewVersion=7.0.0-alpha ; mvn clean install deploy -Papache-release ; mvn versions:revert
      

      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 into Apache Nexus UI, select the repository under "Staging Repository" and click Close button to close staging repository to prevent publishing of any new artifact. After closing, a permanent link to the staging repository will be available.
    3. Send an email into users@qpid.apache.org about alpha availability with a link to the staging repository.
    4.  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.
  8. Check JIRA system for any unresolved JIRAs for the release and notify assigned developers to take actions on uncompleted JIRAs
  9. Build RC
    1. If it is not a first RC, remove previous tag from git

      No Format
      git push --delete origin x.y.z
      git tag --delete x.y.z # deletes local tag


    2. Cut the tag using maven:prepare

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

      Release plugin will ask about new release version, tag name and new development version. Enter the same values for version and tag

      On successful execution a 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. Build the RC and publish release artifacts into maven staging repo

      No Format
      mvn release:perform -Papache-release,java-mms.1-0 -Darguments="-DskipTests"


    4. The staging maven repository needs to be closed. 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.
    5. Copy source and binary bundles and their signatures/checksum files from the nexus staging repository into qpid dev staging area at https://dist.apache.org/repos/dist/dev/qpid/broker-j/ 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). Manually rename the source artefact to keep with the source artefact name consistent.

      Code Block
      version=7.0.0
      root=https://repository.apache.org/content/repositories/orgapacheqpid-1121
      mkdir binaries
      
      for i in "" ".asc"; do
          curl -O  $root/org/apache/qpid/apache-qpid-broker-j/${version}/apache-qpid-broker-j-$version-src.tar.gz$i
          if [[ "$i" == "" ]]; then
              sha512sum apache-qpid-broker-j-$version-src.tar.gz > apache-qpid-broker-j-$version-src.tar.gz.sha512
          fi
      done
      
      cd binaries
      
      for i in "" ".asc"; do
          for j in "tar.gz" "zip"; do
              curl -O  $root/org/apache/qpid/apache-qpid-broker-j/${version}/apache-qpid-broker-j-$version-bin.$j$i
          done
      done
      
      for j in "zip" "tar.gz"; do
        sha512sum apache-qpid-broker-j-$version-bin.$j > apache-qpid-broker-j-$version-bin.$j.sha512
      done
      
      for j in "zip" "tar.gz"; do 
         sha512sum -c apache-qpid-broker-j-$version-bin.$j.sha512
         gpg --verify apache-qpid-broker-j-$version-bin.$j.asc
      done
      
      cd ..
       
      sha512sum -c apache-qpid-broker-j-$version-src.tar.gz.sha512
      gpg --verify apache-qpid-broker-j-$version-src.tar.gz.asc
      


    6. Send an email into users@qpid.apache.org about RC availability with links to the maven staging repository and qpid dev staging area folder containing source and binary bundles

  10. If RC is OK and voting passes, publish release artifacts:
    1. send a email to users@qpid.apache.org to close the vote. This should include the number of binding and non-binding votes, the result, and a link to the voting thread (use Apache services (this or
      this).
    2. promote maven staging artifacts from staging repository into the world by pressing Release button in Apache Nexus UI.
    3. 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 7.0.0-rc3 artifacts into final 7.0.0

      No Format
      svn cp -m "Publish 7.0.0 release artifacts" https://dist.apache.org/repos/dist/dev/qpid/broker-j/7.0.0-rc3 https://dist.apache.org/repos/dist/release/qpid/broker-j/7.0.0

      If voting does not pass, resolve found issues, drop staging repository, delete svn tag and repeat instructions from step 9 until voting passes.

  11. Wait for 24 hours after closing the vote
  12. Update Qpid web site pages for new release of Qpid Broker-J component and publish new release documentation following instructions here.
    Java 8 could be required for latest fop/docbook dependencies. Here are sample commands which could be used to create 7.0.0 release pages on the website based on the 7.0.0 tag.

    No Format
    git clone https://gitbox.apache.org/repos/asf/qpid-site.git site
    cd ./site
    make gen-broker-j-release RELEASE=7.0.0 ISSUES_RELEASE=qpid-java-broker-7.0.0
    vim ./input/releases/qpid-broker-j-7.0.0/release-notes.md # headline major enhancements and new features
    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
    make publish
    git add input/
    git add content/
    git commit -m "Update site for Qpid Broker-J release 7.0.0"
    git push


  13. Mark release as released in JIRA and close any unresolved JIRAs if required
  14. Send the release notification email into  users@qpid.apache.orgdev@qpid.apache.org andannounce@apache.org.
    Announce messages must include a link to the download page where the release(s) can be found. Readers should not have to search on the website for the download page.
    I.e., a link to the version download page should be provided rather than Qpid Download page.

    Info

    Note, In order to send messages into announce@apache.org one need to send the mail with the From field set to one's apache.org address. Gmail can be set-up to do so via use of the ASF mail relay. The details how to set up apache account to use ASF mail relay can be found in the following resources
    https://blogs.apache.org/infra/entry/committers_mail_relay_service
    https://reference.apache.org/committer/email#sendingemailfromyourapacheorgemailaddress
    http://gmailblog.blogspot.co.uk/2009/07/send-mail-from-another-address-without.html


  15. Remove the previous release binaries from  https://dist.apache.org/repos/dist/release/qpid/broker-j when a new one is announced
  16. Create jenkins jobs for new major/minor version if required

...