How To Release Tez
GPG Keys Setup
Follow Apache guidelines on setting up your GPG keys and ensure that your fingerprint is updated at id.apache.org.
Also, append your keys to the KEYS file at https://dist.apache.org/repos/dist/release/tez/KEYS
gpg --armor --fingerprint --list-sigs <keyid> gpg --armor --export <keyid>
Ensure that you publish your key at http://pgp.mit.edu/
Creating a Release Candidate
Create or Checkout the Release Branch
git checkout -b branch-x.y.z
Run Basic Release checks
mvn clean install -DskipTests=true mvn clean apache-rat:check
Update Version Number if Required
mvn versions:set -DnewVersion="x.y.z" Modify CHANGES.txt to set the release date to when the vote will likely end ( +3 or 4 days from the vote start ). Modify CHANGES.txt for this release's ChangeLog using "git log --pretty=oneline" Commit and push all the changes.
Create a Release Tag
git tag -a release-x.y.z-rc0 -m 'Tez x.y.z RC0' git push --tags origin
Deploy the jars to Staging
Your .m2/settings.xml should have something along these lines:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <servers> <server> <id>apache.staging.https</id> <username>XXXXXX</username> <password>YYYYYY</password> </server> </servers> <profiles> <profile> <id>gpg</id> <properties> <gpg.passphrase>XXXXXXX</gpg.passphrase> <gpg.executable>gpg2</gpg.executable> </properties> </profile> </profiles> </settings>
To deploy jars, run:
mvn clean deploy -Psources,javadoc,sign -DskipTests=true
Log on to https://repository.apache.org and look at the Staging Repositories. "Close" the tez jars recently uploaded to get the temporary staging repo URL.
Create a Release tarball for the Source
git clean -f -x -d cd .. cp -R tez-git-x.y.z apache-tez-{x.y.z}-src (where tez-git-x.y.z is the tez code directory) tar --exclude=.git -zcvf apache-tez-{x.y.z}-src.tar.gz apache-tez-{x.y.z}-src
Sign the Release
gpg2 --armor --output apache-tez-{x.y.z}-src.tar.gz.asc --detach-sig apache-tez-{x.y.z}-src.tar.gz
Generate MD5 checksums
md5sum apache-tez-{x.y.z}-src.tar.gz > apache-tez-{x.y.z}-src.tar.gz.md5 sha1sum apache-tez-{x.y.z}-src.tar.gz > apache-tez-{x.y.z}-src.tar.gz.sha1
or
openssl md5 apache-tez-{x.y.z}-src.tar.gz > apache-tez-{x.y.z}-src.tar.gz.md5 openssl sha1 apache-tez-{x.y.z}-src.tar.gz > apache-tez-{x.y.z}-src.tar.gz.sha1
Create Binary Tarball as a helper for Users
TBD
Upload Artifacts for Release Vote
The artifacts ( source tarball, checksums etc) need to be copied over to https://dist.apache.org/repos/dist/dev/tez/. ( This is an SVN repo where the release artifacts need to be committed to ). The artifacts should be created under a directory with the release number and RC number.
Release Voting process
Start a Vote
Call for a vote on the dev mailing list with something like this:
Email subject should be: [VOTE] Release Apache Tez-x.y.z RC0
I have created an tez-x.y.zrelease candidate rc0.
GIT source tag (r***)
https://git-wip-us.apache.org/repos/asf/tez/repo?p=tez.git;a=log;h=refs/tags/release-x.y.z-rc0 ( git hash <commit hash> )
Staging site: https://dist.apache.org/repos/dist/dev/tez/tez-release-rc/tez-x.y.z-rc0/ ( svn revision <revision> )
Nexus Staging URL:
PGP release keys (signed using <GPG KEY>) http://pgp.mit.edu:11371/pks/lookup?op=vindex&search=<GPG KEY>
KEYS file available at https://dist.apache.org/repos/dist/release/tez/KEYS
One can look into the issues fixed in this release at https://issues.apache.org/jira/**
Vote will be open for atleast 72 hours.
[ ] +1 approve
[ ] +0 no opinion
[ ] -1 disapprove (and reason why)
Ending a Successful/Failed Vote
Once the vote passes/fails, send out an email with subject like "[RESULT][VOTE] Apache Tez x.y.z rc0" to dev@tez.apache.org.
List +1s, -1s, 0s with clear distinctions between binding ( PMC and committers ) and nonbinding ( general contributors) votes.
Canceling a Vote
For a cancelled vote due to any reason, change the subject to "[CANCEL][VOTE] Apache Tez x.y.z rc0"
After A Successful Vote
Release the staging repository
Log on to https://repository.apache.org and look at the Staging Repositories. "Release" the tez repository previously sent out in the vote thread, so that it is available for general consumption.
Copy the bits to distribution folder for Apache Tez
Copy the Release Candidate bits from https://dist.apache.org/repos/dist/dev/tez/ to https://dist.apache.org/repos/dist/release/tez/. Create a new directory with the release number and copy the artifacts into that directory. If needed, update STABLE to point to the new release.
Create the release tag
git tag -a release-x.y.z -m 'Tez x.y.z'
git push --tags origin
Note that it takes 24 hours for the changes to propagate to the mirrors.
Wait 24 hours and verify that the bits are available in the mirrors before sending an announcement.
Update website at tez.apache.org
Follow instructions from Updating the Tez Website
Release Announcement
Send out Announcement to dev@tez.apache.org and user@tez.apache.org
Suject: [ANNOUNCE] Apache Tez x.y.z.
The Apache Tez team is proud to announce the release of Apache Tez version x.y.z
The Apache Tez project is aimed at creating a framework to build efficient and scalable data processing applications that can be modelled as data flow graphs.
<Describe the high-lights of the release>
The release bits are at: http://www.apache.org/dyn/closer.cgi/tez.
We would like to thank all the contributors that made the release possible.
Regards,
The Tez Team