Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: moved generating keys section to prerequisites (from building section)

...

Table of Contents

Preparation

Read Documentation

Prior to starting an HCatalog release, please familiarize yourself with the following:

TODO:

  1. Define issue management process like assigning/removing issues from release.
  2. 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:

  1. Generate a 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/incubator/hcatalog/branches/branch-X.Y.Z/KEYS
            https://svn.apache.org/repos/asf/incubator/hcatalog/trunk/KEYS
    
  4. Upload updated KEYS to Apache.
    Code Block
    
            scp KEYS people.apache.org:/www/www.apache.org/dist/incubator/hcatalog/KEYS
    
  5. Export your private key, keep it with you.
    Code Block
    
            gpg --export-secret-key -a "Your Name" > private.key
    

TODO:

  1. Define issue management process like assigning/removing issues from release.
  2. 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.

  1. 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.
  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
    
    Apache HCatalog Change Log
    
    Release 0.1.0 - Unreleased
  3. 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.
  4. 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)
    
  5. 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.
  6. Commit these changes to trunk: 
    Code Block
    
    svn commit -m "Preparing for release X.Y.Z"
    
  7. 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"
    
  8. 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
    ....
    
  9. Update the default version in build.properties on trunk to X.Y+1.0.
  10.  HCAT-1. Upload initial code to HCatalog (gates)
    
  11. 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
  12. 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).

  1. 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
    
  2. 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
  3. For patches, update CHANGES.txt to include the release version and date. See #2 from Create 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.N-dev, where N is one greater than the release being made.
  6.  -m "Branching for X.Y releases"
    
  7. 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
    ....
    
  8. Update the default version in build.properties on trunk to X.Y+1.0.
  9. 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
  10. Commit these changes to trunk:
    Code Block
    
    
    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).

  1. 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

  1. 
    
  2. 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
    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
    
  3. Test the tar file by unpacking the release and
    1. building hcatalog.jar: ant
    2. running unit tests ant test
  4. 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
    
  5. -Dforrest.home=<forrest installation dir> releaseaudit > rat_report
    
    Save the rat_report file, you will need it later
  6. For patches, update CHANGES.txt to include the release version and date. See #2 from Create Release Branch section.
  7. 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.
  8. Update the version number in build.xml to be X.Y.N-dev, where N is one greater than the release being made.
  9. 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.
    release X.Y.Z"
    
  10. Tag the release candidate, where R is the iteration number for this release candidate, starting with 0:
    Code Block
    
        svn 
    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
    -rcR release."
    

Building

  1. 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
    
  2. Test the tar file by unpacking the release and
    1. building hcatalog.jar: ant
    2. running unit tests ant test
  3. Generate the MD5 checksum of the release file: https://svn.apache.org/repos/asf/incubator/hcatalog/trunk/KEYS
  4. Upload updated KEYS to Apache.
    Code Block
    
            scp KEYS people.apache.org:/www/www.apache.org/dist/incubator/hcatalog/KEYS
    
  5. Export your private key, keep it with you.
    Code Block
    
        cd build
        
    gpg
    md5sum hcatalog-
    -export-secret-key -a "Your Name" > private.key
    X.Y.Z-incubating.tar.gz > hcatalog-X.Y.Z-incubating.tar.gz.md5
    
  6. 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
    
  7. 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
    
  8. 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.
  9. 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
      
  10. 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.

...