...
Preparation
Read Documentation
Prior to starting an HCatalog release, please familiarize yourself with the following:
TODO:
- Define issue management process like assigning/removing issues from release.
- Need to integrate javadoc into this.
Creating Release Branch
We only branch for major (X.0.0) and minor(X.Y.0) releases but not for patches (X.Y.Z). Patch is and update to an existing branch created for X.Y.0.
Generate GPG Keys
If you do not have a gpg key pair, do the following steps:
- Generate a key pair using the following command. You can simply accept all default settings and give your name, email and Passphase.
- Export your public key.
Code Block |
---|
gpg --armor --output pubkey.txt --export 'Your Name'
|
- Open pubkey.txt, copy the full text and append it to the following files by pasting, then commit these changes:
Code Block |
---|
https://svn.apache.org/repos/asf/incubator/hcatalog/branches/branch-X.Y.Z/KEYS
https://svn.apache.org/repos/asf/incubator/hcatalog/trunk/KEYS
|
- Upload updated KEYS to Apache.
Code Block |
---|
scp KEYS people.apache.org:/www/www.apache.org/dist/incubator/hcatalog/KEYS
|
- Export your private key, keep it with you.
Code Block |
---|
gpg --export-secret-key -a "Your Name" > private.key
|
TODO:
- Define issue management process like assigning/removing issues from release.
- Need to integrate javadoc into this.
Creating Release Branch
We only branch for major (X.0.0) and minor(X.Y.0) releases but not for patches (X.Y.Z). Patch is and update to an existing branch created for X.Y.0.
- Send email to
hcatalog-dev@incubator.apache.org
to notify that you about to branch the tree and ask to hold off any commits till this is finished. - Update
CHANGES.txt
to include the release version and date (use Unreleased for the date if it is unknown) and remove Trunk (unreleased changes). Below is the example of the top of the CHANGES.txt
file after the update: Code Block |
---|
Apache HCatalog Change Log
Release 0.1.0 - Unreleased |
- Send email to
hcatalog-dev@incubator.apache.org
to notify that you about to branch the tree and ask to hold off any commits till this is finished. - Update
CHANGES.txt
to include the release version and date (use Unreleased for the date if it is unknown) and remove Trunk (unreleased changes). Below is the example of the top of the CHANGES.txt
file after the update: Code Block |
---|
Apache HCatalog Change Log
Release 0.1.0 - Unreleased
INCOMPATIBLE CHANGES
NEW FEATURES
HCAT-1. Upload initial code to HCatalog (gates)
|
- Edit
src/docs/src/documentation/content/xdocs/site.xml
. In the external reference for api where the link contains the previous version number change this string to the correct version number. - Commit these changes to trunk:
Code Block |
---|
svn commit -m "Preparing for release X.Y.Z"
|
- Create a branch for the release series:
Code Block |
---|
svn copy https://svn.apache.org/repos/asf/incubator/hcatalog/trunk \
https://svn.apache.org/repos/asf/incubator/hcatalog/branches/branch-X.Y -m "Branching for X.Y releases"
|
- Update
CHANGES.txt
to add back in Trunk (unreleased changes). Top of the CHANGES.txt
should look like this now: Code Block |
---|
HCatalog Change Log
Trunk (unreleased changes)
INCOMPATIBLE CHANGES
IMPROVEMENTS
OPTIMIZATIONS
NEW FEATURES
BUG FIXES
Release 0.1.1 - Unreleased
....
|
- Update the default version in
build.properties
on trunk to X.Y+1.0. HCAT-1. Upload initial code to HCatalog (gates)
|
- Edit
src/docs/src/documentation/content/xdocs/site.xml
. In the external reference for api where the link contains the previous version number change this string to the correct version number.Update the versions in all of the pom files, pom.xml, core/pom.xml, hcatalog-pig-adapter/pom.xml, server-extensions/pom.xml, storage-handlers/hbase/pom.xml, webhcat/svr/pom.xml, webhcat/java-client/pom.xml
to X.Y+1.0 - Commit these changes to trunk:
Code Block |
---|
svn commit -m "Preparing for release X.Y+1.0 developmentZ"
|
Updating Release Branch
The steps in this section are needed for all the releases (major, minor, and patches).
- Check out the branch withCreate a branch for the release series:
Code Block |
---|
svn copy https://svn co .apache.org/repos/asf/incubator/hcatalog/trunk \
https://svn.apache.org/repos/asf/incubator/hcatalog/branches/branch-X.Y
|
- Run rat report and make sure that all files that can have apache license agreement. Note that currently the rat report is part of output and needs to be manually extracted. TODO: write the report into a file.
Code Block |
---|
ant -Dforrest.home=<forrest installation dir> releaseaudit > rat_report
|
Save the rat_report file, you will need it later - For patches, update CHANGES.txt to include the release version and date. See #2 from Create Release Branch section.
- Update
RELEASE_NOTES.txt
for this release: - Make sure to change all of the version number references to the current version number.
- Note highlights for this release.
CHANGES.txt
is a great place to find these. - Note incompatibilities for this release. These should be listed under INCOMPATIBLE CHANGES in
CHANGES.txt
.
- Update the version number in
build.xml
to be X.Y.N-dev, where N is one greater than the release being made. -m "Branching for X.Y releases"
|
- Update
CHANGES.txt
to add back in Trunk (unreleased changes). Top of the CHANGES.txt
should look like this now: Code Block |
---|
HCatalog Change Log
Trunk (unreleased changes)
INCOMPATIBLE CHANGES
IMPROVEMENTS
OPTIMIZATIONS
BUG FIXES
Release 0.1.1 - Unreleased
....
|
- Update the default version in
build.properties
on trunk to X.Y+1.0. - Update the versions in all of the pom files,
pom.xml, core/pom.xml, hcatalog-pig-adapter/pom.xml, server-extensions/pom.xml, storage-handlers/hbase/pom.xml, webhcat/svr/pom.xml, webhcat/java-client/pom.xml
to X.Y+1.0 - Commit these changes to trunk: Commit these changes:
Code Block |
---|
svn commit -m "Preparing for release X.Y+1.Z0 development"
|
Updating Release Branch
The steps in this section are needed for all the releases (major, minor, and patches).
- Check out the branch withTag the release candidate, where
R
is the iteration number for this release candidate, starting with 0: Code Block |
---|
svn copyco https://svn.apache.org/repos/asf/incubator/hcatalog/branches/branch-X.Y \
https://svn.apache.org/repos/asf/incubator/hcatalog/tags/release-X.Y.Z-rcR -m "HCatalog X.Y.Z-rcR release."
|
Building
- Run rat report and make sure that all files that can have apache license agreement. Note that currently the rat report is part of output and needs to be manually extracted. TODO: write the report into a file. Build the release and run unit tests:
Code Block |
---|
umask 0022
ant clean
ant test
ant -Dhcatalog.version=X.Y.Z-incubating -Dforrest.home=<Forrest installation dir> src-release
|
- Test the tar file by unpacking the release and
- building hcatalog.jar:
ant
- running unit tests
ant test
- Generate the MD5 checksum of the release file:
Code Block |
---|
cd build
md5sum hcatalog-X.Y.Z-incubating.tar.gz > hcatalog-X.Y.Z-incubating.tar.gz.md5
|
-Dforrest.home=<forrest installation dir> releaseaudit > rat_report
|
Save the rat_report file, you will need it later- For patches, update CHANGES.txt to include the release version and date. See #2 from Create Release Branch section.
- Update
RELEASE_NOTES.txt
for this release: - Make sure to change all of the version number references to the current version number.
- Note highlights for this release.
CHANGES.txt
is a great place to find these. - Note incompatibilities for this release. These should be listed under INCOMPATIBLE CHANGES in
CHANGES.txt
.
- Update the version number in
build.xml
to be X.Y.N-dev, where N is one greater than the release being made. - Commit these changes: If you do not have a gpg key pair, do the following steps: Generating key pair using the following command. You can simply accept all default settings and give your name, email and Passphase.
Code Block |
---|
svn commit -m "Preparing for |
gpg --gen-key
Export your public key. - Tag the release candidate, where
R
is the iteration number for this release candidate, starting with 0: gpg --armor --output pubkey.txt --export 'Your Name'
Open pubkey.txt, copy the full text and append it to the following files by pasting, then commit these changes: Code Block |
copy https://svn.apache.org/repos/asf/incubator/hcatalog/branches/branch-X.Y \
https://svn.apache.org/repos/asf/incubator/hcatalog/ |
branches/branch-tags/release-X.Y.Z-rcR -m "HCatalog X.Y.Z |
/KEYS
Building
- Build the release and run unit tests:
Code Block |
---|
umask 0022
ant clean
ant test
ant -Dhcatalog.version=X.Y.Z-incubating -Dforrest.home=<Forrest installation dir> src-release
|
- Test the tar file by unpacking the release and
- building hcatalog.jar:
ant
- running unit tests
ant test
- Generate the MD5 checksum of the release file: https://svn.apache.org/repos/asf/incubator/hcatalog/trunk/KEYS
- Upload updated KEYS to Apache.
Code Block |
---|
scp KEYS people.apache.org:/www/www.apache.org/dist/incubator/hcatalog/KEYS
|
Export your private key, keep it with you. gpg-export-secret-key -a "Your Name" > private.keyX.Y.Z-incubating.tar.gz > hcatalog-X.Y.Z-incubating.tar.gz.md5
|
- Sign the release (see Step-By-Step Guide to Mirroring Releases for more information).
Code Block |
---|
gpg --armor --output hcatalog-X.Y.Z-incubating.tar.gz.asc --detach-sig hcatalog-X.Y.Z-incubating.tar.gz
|
- Verify gpg signature.
Code Block |
---|
gpg --import KEYS (if necessarily)
gpg --verify hcatalog-X.Y.Z-incubating.tar.gz.asc hcatalog-X.Y.Z-incubating.tar.gz
|
- Copy release files to a public place (usually into public_html in your home directory):
Code Block |
---|
ssh people.apache.org mkdir public_html/hcatalog-X.Y.Z-incubating-candidate-0
scp -p hcatalog-X.Y.Z-incubating.tar.gz* people.apache.org:public_html/hcatalog-X.Y.Z-incubating-candidate-0
cd ..
scp RELEASE_NOTES.txt people.apache.org:public_html/hcatalog-X.Y.Z-incubating-candidate-0
scp rat_report people.apache.org:public_html/hcatalog-X.Y.Z-incubating-candidate-0
|
The rat_report
is the report generated in the Updating Release Branch section above. - Call a release vote for the Podling PMC (PPMC). This vote must receive a minimum of 3 PPMC members +1s, and more +1s than -1s. The email should be sent to hcatalog-user@incubator.apache.org. The mail should:
Wiki Markup |
---|
have a subject line "\[VOTE\] Release HCatalog X.Y.Z-incubating (candidate a)" where X.Y.Z is the version number and {{a}} is the candidate number for this release. |
- State what is new in this release.
- Tell where the keys used to sign the release can be found.
- State where the release, md5 signature, gpg signature, and rat report can be found.
- Request that users and developers download it, test it, and vote.
- State when the vote closes. The vote must remain open for at least 72 hours. It can be longer at your discretion (e.g. around major holidays).
Here is a sample email: Code Block |
---|
Subject: [VOTE] Release HCatalog 0.1.0-incubating (candidate 0)
Hi,
I have created a candidate build for HCatalog 0.1.0-incubating. This is the initial release of HCatalog.
Keys used to sign the release are available at http://svn.apache.org/viewvc/incubator/hcatalog/trunk/KEYS?view=markup.
Please download, test, and try it out:
http://people.apache.org/~you/hcatalog-0.1.0-incubating-candidate-0
The release, md5 signature, gpg signature, and rat report can all be found at the above address.
Should we release this? Vote closes on Thursday, June 16th.
Me
|
- If the PPMC approves the release, call an Incubator PMC (IPMC) vote. This vote must receive a minimum of 3 IPMC member +1s, and more +1s than -1s. The email sent should look similar.
...