Publishing a Release Candidate

Generating the PGP key (if you haven’t already)

Create new pgp key. See

sudo zypper -y install gpg
gpg --version
gpg (GnuPG) 2.0.22

This is a new enough version according to the apache site.

Generate a new key via

gpg --gen-key --s2k-digest-algo sha512

Answer 4096 bits, no expiration time.

Uploaded key to It now appears as

Get the pgp key signed by others.

Add the new pgp key to the KEYS file

JIRA maintenance

From hadoop HowToRelease at : Bulk update Jira to unassign from this release all issues that are open non-blockers.

Maven and build

Update the versions in Maven.

mvn versions:set -DnewVersion=4.0.0

or do it manually by editing the pom.xml files. Commit the new versions.

Add a settings.xml in ~/.m2/settings.xml with the appropriate logins.

Create the release branch:

git checkout -b 4.0

Create the release tag via git

git tag -s 4.0.0RC0 -m '4.0 release candidate 0' -u 9CD4D9D3

For some reason, I get a message about needing a password. But no password is actually asked for. Perhaps it is supplied by the window manager via its keyring-like program.

Push branch-X.Y.Z and the newly created tag to the remote repo.

git push apache 4.0 4.0.0RC0

Upload the build to Sonatype’s servers.

git clean -fdqx .
mvn clean deploy -Psign,src,dist -DskipTests

This will take a while because it needs to upload to the servers.

Log into and go to Select the repo you uploaded earlier. You can browse the files here to verify it looks right. When you are satisfied, click “Close”.

Generate the source tarball via:

mvn clean install -DskipTests assembly:single -Pdist

Generate the side files.

gpg --print-mds /home/cmccabe/src/htrace2d/target/htrace-4.0.0-incubating-src.tar.gz > \
gpg --armor --output /home/cmccabe/src/htrace2d/target/htrace-4.0.0-incubating-src.tar.gz.asc \
  --detach-sig /home/cmccabe/src/htrace2d/target/htrace-4.0.0-incubating-src.tar.gz

rsync up to your public_html directory in

rsync -avi /home/cmccabe/src/htrace2d/target/htrace-4.0.0-incubating-src.tar.* \

Generate release notes via JIRA at by clicking on the release and then clicking the grey “release notes” button in the top right.

Mailing list

Propose a new release on the mailing list. Wait 1 day for responses.

Post a message with the form:

 > I've posted the first release candidate here:
 > The jars have been staged here:
 > There's a lot of great stuff in this release [description]
 > The vote will run for 5 days.
 > cheers,
 > Colin
 > [release notes]

Publishing website

Checkout the current website. It is in svn (that’s right, subversion). The website is in a distinct location such that when its’ content is svn committed, the commit is published as

Here is how you’d check out the current site into a directory named in the current directory:

 $ svn checkout

Next, run the site publishing script at ${HTRACE_CHECKOUT_DIR}/bin/ It will dump out usage information that looks like this:

$ ./bin/
Usage: ./bin/ [-i | -a] [-g <dir>] [-s <dir>]
-h          Show this message
-i          Prompts the user for input
-a          Does not prompt the user. Potentially dangerous.
-g          The local location of the HTrace git repository
-s          The local location of the HTrace website svn checkout
Either -i or -a is required.
Edit the script to set default Git and SVN directories.

To run the publish site script interactively, here is an example where the git checkout is at ~/checkouts/incubator-htrace and the svn checkout is at ~/checkouts/

 $ ./bin/ -i -g ~/checkouts/incubator-htrace -s ~/checkouts/