Creating a release

This document will include the steps needed to be taken by the release manager to create a successful release candidate.

Creating a release branch

first step is to create a new release branch. The branch must follow following naming pattern releaseX.XX where X.XX is the release version number.

In this example upstream is the apache/incubator-hop github repository

git branch releaseX.XX upstream/master
git checkout releaseX.XX
git push upstream releaseX.XX:releaseX.XX

update the version of the poms

mvn versions:set -DnewVersion=X.XX -DgenerateBackupPoms=false

commit the changed version and add tag

Next up checking in the changes and adding a release tag.

git add .
git commit -m 'Create release version x.xx'
git push upstream releaseX.XX:releaseX.XX

git tag -a X.XX-rcX
git push upstream tag X.XX-rcX

Creating the release artifacts

Checkout the tag to a clean folder to avoid files that are ignored by git and remove the git folder. Next up is creating the tar.gz file

git clone --depth 1 --branch X.XX-rcX https://github.com/apache/incubator-hop.git apache-hop-X.XX-incubating
rm -rf apache-hop-X.XX-incubating/.git
tar -czvf apache-hop-X.XX-incubating-rcX.tar.gz apache-hop-X.XX-incubating

Sign the artifacts

This part assumes you already have created and registered keys to sign the artifacts, for more information on creating and adding your keys see here

gpg --armor --default-key username@apache.org --output apache-hop-X.XX-incubating-rcX.tar.gz.asc --detach-sig apache-hop-X.XX-incubating-rcX.tar.gz
sha512sum apache-hop-X.XX-incubating-rcX.tar.gz > apache-hop-X.XX-incubating-rcX.tar.gz.sha512

Staging the files

First step is to check out the SVN directory, and create a new directory

svn co https://dist.apache.org/repos/dist/dev/incubator/hop hop_release
cd hop_release
svn mkdir apache-hop-x.xx-incubating-rcx

Now copy over the following files in this new directory

apache-hop-X.XX-incubating-rcX.tar.gz.sha512
apache-hop-X.XX-incubating-rcX.tar.gz.asc
apache-hop-X.XX-incubating-rcX.tar.gz

Final checks before adding these files

  • check chekcsum

  • check pgp signature

cd apache-hop-x.xx-incubating-rcx
gpg --verify apache-hop-X.XX-incubating-rcX.tar.gz.asc
sha512sum -c apache-hop-X.XX-incubating-rcX.tar.gz.sha512

Add and commit the files to svn

svn add *
svn status
svn commit -m 'Add release files for Apache hop X.XX-rcX'

Check if the files are uploaded here

Send mail to dev list to announce new release candidate

Mail Template

Subject: [VOTE] Release Apache Hop (incubating) X.XX-rcX
TO: dev@hop.apache.org

Hi All,

<INCLUDE SOME TEXT>

Build instructions can be found in the README included.

The tag to be voted on is X.XX-rcX <REPLACE TAG> (commit <COMMIT HASH>):
<URL TO TAG COMMIT>

The release files, including signatures, digests, etc. can be found at:
<INCLUDE URL TO DIST RC FOLDER>
https://dist.apache.org/repos/dist/dev/incubator/hop/apache-hop-X.XX-incubating-rcX/

The SHA512 Checksum for these artifacts is:
<INCLUDE CHECKSUM FROM SHA512 file>

Release artifacts are signed with the following key:
<ADD URL TO YOUR KEY ON A PUBLIC KEYSERVER>

For more information about the contents of this release, see:
<ADD URL TO RELEASE IN JIRA>

Please vote on releasing this package as Apache Hop (incubating) X.XX!

The vote is open for 72 hours and passes if
a majority of at least 3 +1 PMC votes are cast.

[ ] +1 Release this package as Apache Hop (incubating) X.XX
[ ] +0 No opinion
[ ] -1 Do not release this package because ...

Best Regards,
<YOUR NAME>

Send a result mail to the dev mailing list

Subject: [RESULT] [VOTE] Release Apache Hop (incubating) X.XX-rcX
TO: dev@hop.apache.org

Hello Team,

The vote to release Apache Hop (incubating) X.XX - RCX has passed/failed.

+1 (binding):

+1 (non-binding)

+0

-1 (binding)

-1 (non-binding)

Thank you for reviewing this release candidate.

Cheers,
<YOUR NAME>

While in Incubator

Send mail to general incubator list

The mail to the IPMC is almost identical to our vote mail, a few extra details are added:

  • Vote and Result mail thread

Subject: [VOTE] Release Apache Hop (incubating) X.XX-rcX
TO: general@incubator.apache.org

Hi All,

<INCLUDE SOME TEXT>

Build instructions can be found in the README included.

Hop community vote and result threads:
Vote:
 <URL TO VOTE FROM https://lists.apache.org/list.html?dev@hop.apache.org>
Result:
 <URL TO VOTE RESULT FROM https://lists.apache.org/list.html?dev@hop.apache.org>

The tag to be voted on is X.XX-rcX <REPLACE TAG> (commit <COMMIT HASH>):
<URL TO TAG COMMIT>

The release files, including signatures, digests, etc. can be found at:
<INCLUDE URL TO DIST RC FOLDER>
https://dist.apache.org/repos/dist/dev/incubator/hop/apache-hop-X.XX-incubating-rcX/

The SHA512 Checksum for these artifacts is:
<INCLUDE CHECKSUM FROM SHA512 file>

Release artifacts are signed with the following key:
<ADD URL TO YOUR KEY ON A PUBLIC KEYSERVER>

For more information about the contents of this release, see:
<ADD URL TO RELEASE IN JIRA>

Please vote on releasing this package as Apache Hop (incubating) X.XX!

The vote is open for 72 hours and passes if
a majority of at least 3 +1 PMC votes are cast.

[ ] +1 Release this package as Apache Hop (incubating) X.XX
[ ] +0 No opinion
[ ] -1 Do not release this package because ...

Best Regards,
<YOUR NAME>

Creating a key

To generate and publish a key follow these steps, it is recommended to use your apache email as key alias.

gpg --gen-key
gpg -k <username>@apache.org
# get the ID for your key
gpg --send-keys --keyserver php.mit.edu <KEY ID>
gpg --send-keys --keyserver keyserver.ubuntu.com <KEY ID>

Next step is to add your key to the key file in the Apache SVN repository.

svn co https://dist.apache.org/repos/dist/dev/incubator/hop hop_release
cd hop_release
gpg --list-sigs <keyID> >> KEYS
gpg  --armor --export <keyID> >> KEYS
svn commit -m "added new public key to KEYS file"