...
This document summarizes the steps of release procedure for Qpid Java Components
The Qpid release process is based on Publishing of Maven Documents
The purspose of this document is to describe the release procedure for Qpid Java Components.for Qpid Broker-J
Pre-Requirements
The release manager should be familiar with process is based on Apache Release Policy, Release Signing and Publishing of Maven Documents
PGP
Install Release artifacts needs to be signed. GNU Privacy Guard from OpenPGP and have generated and signed PGP keys is used to sign on Apache. Please, refer Release Signing about PGP public key cryptography. The document contains provides basic information about release signing and contains link links to various resources about PGP public key cryptography and how to use GNU Privacy Guard to generate and sign the PGP keys. Briefly,
...
Install GNU Privacy Guard
...
,
...
No Format |
---|
sudo yum install gnupg
|
...
generate keys following steps provided here and upload public keys to keyservers . After publishing keys, login into https://id.apache.org and enter PGP key fingerprint(s), then the corresponding keys will be made available under https://people.apache.org/keys/ within a few hours. 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 the development environment should be setup as described at Publishing of Maven Artifacts.
Maven
The Qpid Java Components requires 3.x version of Maven. Add your credentials for Apache maven repository into maven settings.xml as required in Publishing of Maven Documents.
Info |
---|
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
SVN
...
Major release procedure
8 is required to compile java classes. Install latest 1.8 JDK. At the moment of writing this document 1.8.0_192 JDK was the latest one.
Git
Sources are kept in a Git repository. Thus a git client is required.
Major/Minor/Bugfix version release
Checkout Qpid sources
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
For bugfix release
if branch does not exist, cut the branch and set the correct version in maven
No Format git clone https://gitbox
Checkout Qpid sources from trunk using svn client. Alternatively, git and git-svn can be used.
svn co https://svnNo Format .apache.org/repos/asf/qpid
-broker-j.git qpid-
broker-j cd ./qpid
Check that you can build using profile apache-release
No Format -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
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
Run RAT tool to verify that all source files have license headers
No Format mvn apache-rat:check
Check that images don't have a non-free ICC profile.
Code Block language bash find . -regextype posix-extended -iregex '.*\.(jpg|png|ico|tif)' -exec sh -c 'identify -verbose "$0" | grep -i copyright && echo "$0"' {} \;
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 language xml title ~/.m2/settings.xml collapse true <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>
Add license headers to the files which do not have one or update licenses. Update RAT excludes if required.
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
Build alpha/beta (optional).
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-alphaNo 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
- 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.
- Send an email into users@qpid.apache.org about alpha availability with a link to the staging repository
- .
- 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.
- Check JIRA system for any unresolved JIRAs for the release and notify authors about the release
Cut the branch using release:branch. Please, refer maven release plugin documentation for more details
No Format mvn release:branch -DbranchName=6.0.x -DupdateBranchVersions=false -DupdateWorkingCopyVersions=true -DautoVersionSubmodules=true
Checkout branch sources, for example
No Format svn co https://svn.apache.org/repos/asf/qpid/java/branches/6.0.x cd 6.0.x
- assigned developers to take actions on uncompleted JIRAs
- Build RC
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
Cut the tag
using maven:prepare
No Format mvn release:clean mvn release:prepare -Papache-release,
java-mms.1-0
-DautoVersionSubmodules=true -DpreparationGoals=test
Preparing the release will create the new tag in SVN, automatically checking in on your behalf.
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
Build the RC and publish release artifacts into maven staging repo
No Format mvn release:perform -Papache-release,
java-mms.1-0
-Darguments="-DskipTests"
- 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.
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
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
- If RC is OK and voting passes, publish release artifacts:
- 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). - promote maven staging artifacts from staging repository into the world by pressing Release button in Apache Nexus UI.
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.
- Wait for 24 hours after closing the vote
Update Qpid web site
Qpid Java Component pagespages for new release of Qpid Broker-J component 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 sitefollowing 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
- Mark release as released in JIRA and close any unresolved JIRAs if required
- Wait for 24 hours after closing the voting and send the
Send the release notification email
into users@qpidinto users@qpid.apache.org, dev@qpid.apache.org and announce@apache.org
Minor release procedure
...
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- Remove the previous release binaries from https://dist.apache.org/repos/dist/release/qpid/broker-j when a new one is announced
- Create jenkins jobs for new major/minor version if required