...
Notify developers on the #hive IRC channel and dev@hive mailing lists that you are about to branch a release.
Create a branch for the release series:
Code Block language text svngit copy https://svn.apache.org/repos/asf/hive/trunk \ https://svn.apache.org/repos/asf/hive/branches/checkout -b branch-X.Y -m "Branching for X.Y releases" origin/master # current branch should now be master git push -u origin branch-X.Y
Increment the value of the
version
property in all pom.xml files. For example, if the current value is0.7.0-SNAPSHOT
, the new value should be0.8.0-SNAPSHOT
. Please note that theSNAPSHOT
suffix is required in order to indicate that this is an unreleased development branch. This can be accomplished with a single command using Maven's Versions plugin as follows:Code Block language text mvn versions:set -DnewVersion=0X.8Y.0-SNAPSHOT -DgenerateBackupPoms=false
- Make changes to metastore upgrade scripts. See HIVE-6555 on how this was done for HIVE 0.13.
- Verify that the build is working with changes.
Commit these changes to trunk.
svn commit -mCode Block master with a comment "Preparing
for
X.Y+1.0
development"
.
Updating Release Branch
These operations take place in the release branch.
Check out the release branch with:
Code Block svngit coclone https://svngit-wip-us.apache.org/repos/asf/hive/branches/.git/ <hive_src_dir> cd <hive_src_dir> git checkout branch-X.Y
Update the
version
property value in all pom.xml files. You should remove theSNAPSHOT
suffix and setversion
equal tohive-X.Y.Z
where Z is the point release number in this release series (0 for the first one, in which case this step is a no-op since you already did this above when creating the branch). Use Maven's Versions plugin to do this as follows:Code Block language text mvn versions:set -DnewVersion=0.7.0 -DgenerateBackupPoms=false
- Update the the value of the
TRACKING_BRANCH
field in the.reviewboardrc
file to point to theorigin/branch-X.Y
. - Verify that the build is working with changes.
Commit these changes .
svn commit -mCode Block with a comment "Preparing
for
releaseX.Y.Z development"
.
If not already done, merge desired patches from trunk into the branch and commit these changes. We don't currently use svn merge for this, but if we did, the script would be
cd branch-X.Y svn merge -rR1:R2 ../trunk . svn commit -m "Merge -r R1:R2 from trunk to X.Y branch. Fixes: HIVE-A, HIVE-B."Code Block Avoid usage of "git merge" to avoid too many merge commits. Either request the committer who committed that patch in master to commit to this branch, or commit it yourself, or try doing a git cherry-pick for trivial patches. Specifics of this step can be laid down by the release manager.
- You probably also want to commit a patch (on both trunk and branch) which updates README.txt to bring it up to date (at a minimum, search+replacing references to the version number). Also check NOTICE to see if anything needs to be updated for recent library dependency changes or additions.
- Select all of the JIRAs for the current release that aren't FIXED and do bulk update to clear the 'Fixed Version' field.
- Likewise, use JIRA's Release Notes link to generate content for the RELEASE_NOTES.txt file. Be sure to select 'Text' format. (It's OK to do this with a direct commit rather than a patch.)
- Update the release notes in trunk with the release notes in branch.
Tag the release candidate (R is the release candidate number, and also starts from 0)::
Code Block git tag -a
Code Block svn copy https://svn.apache.org/repos/asf/hive/branches/branch-X.Y \ https://svn.apache.org/repos/asf/hive/tags/release-X.Y.Z-rcR -m "Hive X.Y.Z-rcR release." git push origin release-X.Y.Z-rcR
Building
- Make sure your release notes have been updated for any new commits, and go through the previous steps if necessary.
Build the release (binary and source versions) after running unit tests. Manually create the md5 files. On a Mac use md5 in place of md5sum.
No Format % mvn install -Pdist -DskipTests -Phadoop-1 -Dmaven.javadoc.skip=true -DcreateChecksum=true % cd packaging/target % md5 apache-hive-0.13.0-bin.tar.gz > apache-hive-X.Y.Z-bin.tar.gz.md5 % md5 apache-hive-0.13.0-src.tar.gz > apache-hive-X.Y.Z-src.tar.gz.md5
Verify that the MD5 checksums are valid:
No Format % md5sum -c hive-X.Y.Z.tar.gz.md5 hive-X.Y.Z.tar.gz: OK % md5sum -c hive-X.Y.Z-bin.tar.gz.md5 hive-X.Y.Z-bin.tar.gz: OK
- Check that release file looks ok -- e.g., install it and run examples from tutorial.
- Setup your PGP keys for signing the release, if you don't have them already.
Sign the release (see Step-By-Step Guide to Mirroring Releases for more information).
No Format % gpg --armor --output apache-hive-X.Y.Z-bin.tar.gz.asc --detach-sig apache-hive-X.Y.Z-bin.tar.gz % gpg --armor --output apache-hive-X.Y.Z-src.tar.gz.asc --detach-sig apache-hive-X.Y.Z-src.tar.gz
Copy release files to a public place.
No Format % ssh people.apache.org mkdir public_html/hive-X.Y.Z-candidate-0 % scp -p apache-hive-X.Y.Z*.tar.gz* people.apache.org:public_html/apache-hive-X.Y.Z-candidate-0
Publish Maven artifacts to the Apache staging repository:
No Format % mvn deploy -DskipTests -Phadoop-1 -Papache-release -Dmaven.javadoc.skip=true
- Login to the Apache Nexus server and "close" the staged repository. This makes the artifacts available at a temporary URL.
...