...
Checkout Qpid sources from trunk using git client.
No Format git clone https://git-wip-us.apache.org/repos/asf/qpid-broker-j.git qpid-broker-j cd ./qpid-broker-j
Run RAT tool to verify that all source files have license headers
No Format mvn apache-rat:check
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 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.
Making an alpha build is optional and can be skipped if required. Alpha does not requires branching. The following chain of maven commands can be used to build and deploy alpha into staging repo
Example of building 6.0.0-alphaNo Format mvn versions:set -DnewVersion=6.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 assigned developers to take actions on uncompleted JIRAs
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.
- Build beta if required following instructions in step 5 on branched sources
Build RC
Checkout branch sources, for example, 6.0.x branch is checked out as below
No Format git clone -b 6.0.x https://git-wip-us.apache.org/repos/asf/qpid-broker-j.git 6.0.x cd 6.0.x
If it is not a first RC, remove previous tag from git
No Format git push --delete origin x.y.z
where x.y.z is a tag version
Cut the tag 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, 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.0-9 -Darguments="-DskipTests"
release:perform will build release artifacts and deploy them into staging repo. Note that this will do a clean checkout so it might take a while.
- 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/java/ 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.
Use curl or wget to download all broker and client tar.gz and zip bundles and their signatures from maven staging repo like so:Code Block version=6.2.1 root=https://repository.apache.org/content/repositories/orgapacheqpid-1103 mkdir binaries for i in "" .asc .md5; do curl -O $root/org/apache/qpid/qpid-java-build/$version/qpid-java-build-$version.tar.gz$i mv qpid-java-build-$version.tar.gz${i} qpid-java-$version.tar.gz${i} done for i in .md5; do echo " qpid-java-$version.tar.gz" >> qpid-java-$version.tar.gz${i} done sha512sum qpid-java-${version}.tar.gz > qpid-java-${version}.tar.gz.sha cd binaries for i in broker client ; do for j in zip tar.gz; do for k in "" .asc .md5; do curl -O $root/org/apache/qpid/qpid-$i/$version/qpid-$i-$version-bin.$j$k; done; done; done for i in broker client ; do for j in zip tar.gz; do for k in .md5 ; do echo " qpid-$i-$version-bin.$j" >> qpid-$i-$version-bin.$j$k done; done; done for i in broker client ; do for j in zip tar.gz; do sha512sum qpid-${i}-${version}-bin.${j} > qpid-${i}-${version}-bin.${j}.sha ; done; done cd ..
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:
- 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 6.0.0-rc5 artifacts into final 6.0.0
No Format svn cp -m "Publish 6.0.0 release artifacts" https://dist.apache.org/repos/dist/dev/qpid/java/6.0.0-rc5 https://dist.apache.org/repos/dist/release/qpid/java/6.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 pages 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 6.0.3 release pages on the website based on the 6.0.3 tag.No Format git clone https://git-wip-us.apache.org/repos/asf/qpid-site.git site cd ./site make gen-java-release RELEASE=6.0.3 ISSUES_RELEASE=qpid-java-6.0.3 vim ./input/releases/qpid-java-6.0.3/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 Java release 6.0.3" git push
- Mark release as released in JIRA and close any unresolved JIRAs if required
- Send the release notification email into users@qpid.apache.org
- Create jenkins jobs for new major/minor version
...