Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. 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.
  2. 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
    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)
    
  3. Commit these changes to trunk:

    Code Block
    svn commit -m "Preparing for release X.Y.Z"
    
  4. 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"
    
  5. 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
    ....
    
  6. Update the default version in build.xml on trunk to X.(Y+1).0-dev.
  7. Commit these changes to trunk:

    Code Block
    svn commit -m "Preparing for X.(Y+1).0 development"
    

Updating Release Branch

...

  1. Check out the branch with:

    Code Block
    svn co https://svn.apache.org/repos/asf/pig/branches/branch-X.Y
    
  2. Run rat report and make sure that all files that can have apache license agreement. Save this rat report.

    Code Block
    ant releaseaudit
    
  3. 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.
  4. Update RELEASE_NOTES.txt for this release:
    1. Make sure to change all of the version number references to the current version number.
    2. Note highlights for this release. CHANGES.txt is a great place to find these.
    3. Note incompatibilities for this release. These should be listed under INCOMPATIBLE CHANGES in CHANGES.txt.
  5. Update the version number in build.xml to be X.Y
  6. Commit this changes:

    Code Block
    svn commit -m "Preparing for release X.Y.Z"
    
  7. 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

  1. Build and run unit tests:

    Code Block
    ant clean
    ant jar test
    
  2. 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 ..
  3. Build the source release and save the src.tar.gz artifact:

    Code Block
    ant -Dversion=X.Y.Z src-release
    
  4. Test the source tar file by unpacking the release and
    1. building pig.jar: ant
    2. building and running tutorial

      Code Block
      cd tutorial
      ant
      
      cd ..
    3. build piggybank

      Code Block
      cd contrib/piggybank/java
      ant
      ant test
      
      cd ../../..
    4. running running unit tests ant test-commit
  5. 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)
    
  6. 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
    
  7. If you do not have a gpg key pair, do the following steps:
    1. 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
      
    2. Export your public key.

      Code Block
      gpg --armor --output pubkey.txt --export 'Your Name'
      
    3. 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
      
    4. Upload updated KEYS to Apache.

      Code Block
      scp KEYS people.apache.org:/www/www.apache.org/dist/pig/KEYS
      
    5. Export your private key, keep it with you.

      Code Block
      gpg --export-secret-key -a "Your Name" > private.key
      
  8. 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
    
    
  9. 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
    
  10. 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
    
  11. Push proposed release to Maven staging area
    1. 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>
      
    2. Run ant command ant mvn-deploy to publish Pig artifacts to the apache snapshot repository.
    3. Run ant command ant –Drepo=staging –Dversion=X.Y.Z mvn-deploy to publish Pig artifacts to the apache staging repository.
  12. 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
    

...