...
- Send email to
dev@pig.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 (useUnreleased
for the date if it is unknown) and removeTrunk (unreleased changes)
. Below is the example of the top of theCHANGES.txt
file after the update:Code Block Pig Change Log Release 0.1.1 - Unreleased INCOMPATIBLE CHANGES NEW FEATURES IMPROVEMENTS PIG-253: integration with hadoop-18 BUG FIXES PIG-342: Fix DistinctDataBag to recalculate size after it has spilled. (bdimcheff via gates)
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/pig/trunk \ https://svn.apache.org/repos/asf/pig/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 Pig Change Log Trunk (unreleased changes) INCOMPATIBLE CHANGES IMPROVEMENTS OPTIMIZATIONS BUG FIXES Release 0.1.1 - Unreleased ....
- Update the default version in
build.xml
on trunk to X.(Y+1).0-dev. Commit these changes to trunk:
Code Block svn commit -m "Preparing for X.(Y+1).0 development"
Updating Release Branch
...
Check out the branch with:
Code Block svn co https://svn.apache.org/repos/asf/pig/branches/branch-X.Y
Run rat report and make sure that all files that can have apache license agreement. Save this rat report.
Code Block ant releaseaudit
- For patches, update CHANGES.txt to include the release version and date and update site.xml with the new version. See #2 and #3 from Create Creating 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 Commit this changes:
Code Block svn commit -m "Preparing for release X.Y.Z"
Tag the release candidate:
Code Block svn copy https://svn.apache.org/repos/asf/pig/branches/branch-X.Y \ https://svn.apache.org/repos/asf/pig/tags/release-X.Y.Z-rcR -m "Pig X.Y.Z-rcR release."
Building
Build and run unit tests:
Code Block ant clean ant jar test
Check that contrib and tutorial directories compile and tests pass:
Code Block cd contrib/zebra ant ant test cd ../.. cd contrib/piggybank/java ant ant test cd ../../../tutorial ant cd ..
Build the source release and save the src.tar.gz artifact:
Code Block ant -Dversion=X.Y.Z src-release
- Test the source tar file by unpacking the release and
- building pig.jar:
ant
building and running tutorial
Code Block cd tutorial ant cd ..
build piggybank
Code Block cd contrib/piggybank/java ant ant test cd ../../..
- running running unit tests
ant test-commit
- building pig.jar:
Build the convenience artifacts:
Code Block ant clean ant test ant clean ant jar cd contrib/zebra ant cd ../.. cd contrib/piggybank/java ant cd ../../.. ant -Dversion=X.Y.Z -Dforrest.home=<Forrest installation dir> tar # TODO: fix deb and rpm targets to use version (not pig.version) like tar does ant -Dpig.version=X.Y.Z -Dforrest.home=<Forrest installation dir> rpm (on a Fedora/Redhat system) ant -Dversion=X.Y.Z -Dpig.version=X.Y.Z -Dforrest.home=<Forrest installation dir> deb (on a Ubuntu/Debian system)
Generate the MD5 checksum of the release artifact and convenience binaries:
Code Block cd build
Generate the MD5 checksum of the release artifact and convenience binaries:
Code Block cd build md5sum pig-X.Y.Z-src.tar.gz > pig-X.Y.Z-src.tar.gz.md5 md5sum pig-X.Y.Z.tar.gz > pig-X.Y.Z.tar.gz.md5 md5sum pig-X.Y.Z-1src.i386tar.rpmgz > pig-X.Y.Z-1src.i386tar.rpmgz.md5 md5sum pig-X.Y.Z-1.i386tar.debgz > md5sum pig-X.Y.Z-1.i386tar.debgz.md5
- 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 gpg --gen-key
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/pig/branches/branch-X.Y.Z/KEYS https://svn.apache.org/repos/asf/pig/trunk/KEYS
Upload updated KEYS to Apache.
Code Block scp KEYS people.apache.org:/www/www.apache.org/dist/pig/KEYS
Export your private key, keep it with you.
Code Block gpg --export-secret-key -a "Your Name" > private.key
Sign the release artifact only (see Step-By-Step Guide to Mirroring Releases for more information).
Code Block gpg --armor --output pig-X.Y.Z-src.tar.gz.asc --detach-sig pig-X.Y.Z-src.tar.gz
Verify gpg signature.
Code Block gpg --import KEYS (if necessarily) gpg --verify pig-X.Y.Z-src.tar.gz.asc pig-X.Y.Z-src.tar.gz
Copy release artifact, convenience binaries, release notes and the rat report to a public place (usually into public_html in your home directory):
Code Block ssh people.apache.org mkdir public_html/pig-X.Y.Z-candidate-0rcR scp -p pig-X.Y.Z* people.apache.org:public_html/pig-X.Y.Z-candidate-0rcR cd .. scp RELEASE_NOTES.txt people.apache.org:public_html/pig-X.Y.Z-candidate-0rcR scp <rat_report> people.apache.org:public_html/pig-X.Y.Z-candidate-0rcR
- Push proposed release to Maven staging area
Create file ~/.m2/settings.xml with following contents (NOTE: It is highly recommended to use Maven's password encryption capabilities for your passwords.):
Code Block <settings> <servers> <server> <id>apache.releases.https</id> <username>your apache id</username> <password>your apache password</password> </server> <server> <id>apache.snapshots.https</id> <username>your apache id</username> <password>your apache password</password> </server> <server> <id>apache.staging.https</id> <username>your apache id</username> <password>your apache password</password> </server> </servers> <profiles> <profile> <id>apache-release</id> <properties> <gpg.passphrase>your GPG password</gpg.passphrase> </properties> </profile> </profiles> </settings>
- Run ant command
ant mvn-deploy
to publish Pig artifacts to the apache snapshot repository. - Run ant command
ant –Drepo=staging –Dversion=X.Y.Z mvn-deploy
to publish Pig artifacts to the apache staging repository.
Call a release vote. The initial email should be sent to
dev@pig.apache.org
. Here is a sample of email:Code Block From: Olga Natkovich [mailto:olgan@yahoo-inc.com] Sent: Tuesday, November 25, 2008 3:59 PM To: dev@pig.apache.org Subject: [VOTE] Release Pig 0.1.1 (candidate 0) Hi, I have created a candidate build for Pig 0.1.1. This release is almost identical to Pig 0.1.0 with a couple of exceptions: (1) It is integrated with hadoop 18 (2) It has one small bug fix (PIG-253) (3) Several UDF were added to piggybank - pig's UDF repository Keys used to sign the release are available at http://svn.apache.org/viewvc/pig/trunk/KEYS?view=markup. Please download, test, and try it out: http://people.apache.org/~olga/pig-0.1.1-candidate-0rc0 Release notes and the rat report are available from the same location. Should we release this? Vote closes on Wednesday, December 3rd. Olga
...