Preliminaries
Apache Release Documentation
- Apache Release Guide
- Apache Release Policy
- Apache Incubator Release Guidelines
- Apache Incubator Release Policy
Code Signing Key
Create a code signing gpg key for release signing; use <your Apache ID>@apache.org for your primary ID for the code signing key. See the Apache Release Signing documentation for further information.
- Add your code signing key to your Apache ID here
- Publish it to a public key server such as the MIT key server.
- Add it to the HAWQ KEYS file.
Ensure JIRA Issues are Appropriately Tagged for the Release
Ensure that all HAWQ JIRA issues that are addressed in this release are marked with the release version in the ‘FixVersion’ field of the issue.
Create the Release Candidate
Prepare Tarballs
Tag your release: (or create a release branch)
git tag -a <tag name> <commit SHA> -m "<message for the tag>"
push to origin:
git push origin <tag name> -m "<tag description message>"
- Make a tarball and gzip:
git archive -o ../apache-hawq-src-<your release name>.tar --prefix=apache-hawq-src-<your release name>/ <your tag/branch name>
gzip ../apache-hawq-src-<your release name>.tarExample:
$ git archive -o ../apache-hawq-src-2.1.0.0-incubating.tar --prefix=apache-hawq-src-2.1.0.0-incubating/ 2.1.0.0-incubating
$ ls -al ../apache-hawq-src-2.1.0.0-incubating.tar
-rw-r--r-- 1 espino staff 183347200 Jan 10 11:02 ../apache-hawq-src-2.1.0.0-incubating.tar
$ gzip ../apache-hawq-src-2.1.0.0-incubating.tar
$ ls -al ../apache-hawq-src-2.1.0.0-incubating.tar.gz
-rw-r--r-- 1 espino staff 35214063 Jan 10 11:02 ../apache-hawq-src-2.1.0.0-incubating.tar.gz Prepare MD5, SHA256 and ASC files from the tarball
md5 apache-hawq-src-<your release name>.tar.gz > apache-hawq-src-<your release name>.tar.gz.md5 shasum -a 256 apache-hawq-src-<your release name>.tar.gz > apache-hawq-src-<your release name>.tar.gz.sha256 gpg --detach-sign -a apache-hawq-src-<your release name>.tar.gz
Example:
$ md5 apache-hawq-src-2.1.0.0-incubating.tar.gz > apache-hawq-src-2.1.0.0-incubating.tar.gz.md5
$ shasum -a 256 apache-hawq-src-2.1.0.0-incubating.tar.gz > apache-hawq-src-2.1.0.0-incubating.tar.gz.sha256
$ gpg --detach-sign -a apache-hawq-src-2.1.0.0-incubating.tar.gzYou need a passphrase to unlock the secret key for
user: "Edward Bartolo Espino (CODE SIGNING KEY) <espino@apache.org>"
4096-bit RSA key, ID 57325522, created 2017-01-09
$ ls -al apache-hawq-src-2.1.0.0-incubating*-rw-r--r-- 1 espino staff 35214063 Jan 10 11:04 apache-hawq-src-2.1.0.0-incubating.tar.gz
-rw-r--r-- 1 espino staff 819 Jan 10 11:09 apache-hawq-src-2.1.0.0-incubating.tar.gz.asc
-rw-r--r-- 1 espino staff 83 Jan 10 11:10 apache-hawq-src-2.1.0.0-incubating.tar.gz.md5
-rw-r--r-- 1 espino staff 84 Jan 10 11:10 apache-hawq-src-2.1.0.0-incubating.tar.gz.sha256- Retrieve the subversion dev incubator hawq repo
Example: svn checkout https://dist.apache.org/repos/dist/dev/incubator/hawq/ --username=<your user name> - create a local folder for the release (e.g. 2.0.0-0-incubating.RC1) in svn. We use apache's distribution repo: https://dist.apache.org/repos/dist/dev/incubator/hawq/
- move the files into the release folder on local disk.
- svn add <release folder>
- svn commit
Validate the Release Candidate
As per the Apache documentation, verify that the release candidate artifacts satisfy the following:
- Checksums and PGP signatures are valid
- Build is successful
- DISCLAIMER is correct, filenames include “incubating”
- LICENSE and NOTICE files are correct and dependency licenses are acceptable
- LICENSE and NOTICE files at the root of the artifact directory must only reflect the contents of the artifact in which they are contained.
- See:
- All source files have license headers where appropriate, RAT checks pass
- The provenance of all source files is clear (ASF or software grants)
Vote on the Release
As per the Apache Incubator release guidelines, all releases for incubating projects must go through a two-step voting process. First, release voting must successfully pass within the Apache HAWQ community via the dev@hawq.incubator.apache.org
mailing list. Then, release voting must successfully pass within the Apache Incubator PMC via the general@incubator.apache.org
mailing list.
General information regarding the Apache voting process can be found here.
Apache HAWQ Community Vote
To vote on a candidate release, send an email to the dev list with subject [VOTE]: Apache Pirk <release version> Release
and a body along the lines of:
This is the vote for <release version> of Apache Pirk (incubating).
The vote will run for at least 72 hours and will close on <closing date>.
The artifacts can be downloaded here: https://dist.apache.org/repos/dist/dev/incubator/pirk/release/<release number> or from the Maven staging repo here: https://repository.apache.org/content/repositories/<repository name>
All JIRAs completed for this release are tagged with 'FixVersion = <release version>'. You can view them here: <insert link to the JIRA release notes>
The artifacts have been signed with Key : <ID of signing key>
Please vote accordingly:
[ ] +1, accept RC as the official <release version> release
[ ] -1, do not accept RC as the official <release version> release because...
If any -1 (binding) votes are entered, then address them such that the voter changes their vote to a +1 (binding) or cancel the vote, roll back the release candidate, fix the issues, and start over with creating the candidate artifacts.
Once 72 hours has passed (which is generally preferred) and/or at least three +1 (binding) votes have been cast with no -1 (binding) votes, send an email closing the vote and pronouncing the release candidate a success. Please use the subject: [RESULT][VOTE]: Apache Pirk <release version> Release
.
The Apache Pirk <release version> vote is now closed and has passed as follows:
[number] +1 (binding) votes
[number] -1 (binding) votes
A vote Apache Pirk <release version> will now be called on general@incubator.apache.org.
Start Voting
Vote in dev@ mailing list, see example here
After collecting enough votes from dev@ mailing list, start vote in IPMC (or PPM if graduated). see example here
Respin as needed and file appropriate JIRAs to address feedback
As soon as Vote result comes out, send out a [Result][Vote] email, see example here
Publishing and Distributing Release
- Finalizing your tag
switching to master branchgit tag -s rel/v{version} <commit SHA> -m "Apache HAWQ(incubating) {version) release (<other comments>)"
Sign your release tag
You need to configure your git user signing key first before you can sign a tag.
git config --global user.signingkey <Your secret key SHA>
- Push your tag to remote (origin)
git push origin rel/v{version}
Move tarballs from staging folder to release location:
svn mv https://dist.apache.org/dist/dev/incubator/hawq/{version}.RC#/ https://dist.apache.org/dist/release/incubator/hawq/{version}
Commit Message
As if you put https URL in svn commands, it'll commit automatically. A text editor will popup for you to edit commit message, put something like: "Release Apache HAWQ(incubating) {{
version
}}"- Add download link on hawq website: http://hawq.apache.org/
- Go to http://issues.apache.org/jira/browse/hawq to release the specific version (need admin permisison , under "Version")
- Send email announcement to general@ and dev@ mailing list to announce the release. see example here