This page is to document the release procedure for HCatalog. HCatalog is currently a Apache incubator project. Its release process is work in progress and is modeled from Apache Pig Release.

Note that only HCatalog committers can create a release.

Preparation

Read Documentation

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

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.
            gpg --gen-key
    
  2. Export your public key.
            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:
            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.
            scp KEYS people.apache.org:/www/www.apache.org/dist/incubator/hcatalog/KEYS
    
  5. Export your private key, keep it with you.
            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:
    Apache HCatalog Change Log
    
    Release 0.1.0 - Unreleased
    
      INCOMPATIBLE CHANGES
    
      NEW FEATURES
        HCAT-1. Upload initial code to HCatalog (gates)
    
  3. 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.
  4. Commit these changes to trunk: 
    svn commit -m "Preparing for release X.Y.Z"
    
  5. Create a branch for the release series:
    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"
    
  6. Update CHANGES.txt to add back in Trunk (unreleased changes). Top of the CHANGES.txt should look like this now:
    HCatalog Change Log
    
    Trunk (unreleased changes)
    
      INCOMPATIBLE CHANGES
    
      IMPROVEMENTS
    
      OPTIMIZATIONS
    
      BUG FIXES
    
    Release 0.1.1 - Unreleased
    ....
    
  7. Update the default version in build.properties on trunk to X.Y+1.0.
  8. 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
  9. Commit these changes to trunk:
    svn commit -m "Preparing for X.Y+1.0 development"
    

Updating Release Branch

The steps in this section are needed for all the releases (major, minor, and patches).

  1. Check out the branch with:
    svn co https://svn.apache.org/repos/asf/incubator/hcatalog/branches/branch-X.Y
    
  2. Generate the releaseaudit report and verify its output, ensuring files have Apache license agreement headers (checkstyle should enforce this), and that nothing looks out of order. The file is written to build/releaseaudit_report.txt.
        ant clean releaseaudit
    
  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. Commit these changes:
        svn commit -m "Preparing for release X.Y.Z"
    
  7. Tag the release candidate, where R is the iteration number for this release candidate, starting with 0:
        svn copy 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. Build the release and run unit tests. This builds a source release artifact, then builds a binary release from that source release, and runs unit tests. Auxiliary files such as MD5 checksums and the releaseaudit report are also generated by the release script.
        FORREST_HOME=/path/to/apache/forrest \
        HCAT_RELEASE_VERSION='X.Y.Z-incubating' \
        ./build-support/scripts/release.sh
    
  2. Sign and verify signature of the release (see Step-By-Step Guide to Mirroring Releases for more information).
        gpg --armor --detach-sig --output build/hcatalog-src-X.Y.Z-incubating.tar.gz.asc \
            build/hcatalog-src-X.Y.Z-incubating.tar.gz
        gpg --import KEYS  (if necessarily)
        gpg --verify build/hcatalog-src-X.Y.Z-incubating.tar.gz.asc \
            build/hcatalog-src-X.Y.Z-incubating.tar.gz
    
  3. Copy release files to a public place (usually into public_html in your home directory):
        ssh people.apache.org mkdir public_html/hcatalog-X.Y.Z-incubating-candidate-0
        scp -p build/hcatalog-src-X.Y.Z-incubating.tar.gz* \
            build/hcatalog-src-X.Y.Z-incubating/build/releaseaudit_report.txt \
            RELEASE_NOTES.txt \
            people.apache.org:/home/travis/public_html/hcatalog-X.Y.Z-incubating-candidate-0
    
  4. 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:
    • 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:
          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
      
  5. If the PPMC approves the release, call an Incubator PMC (IPMC) vote on general@incubator.apache.org. This vote must receive a minimum of 3 IPMC member +1s, and more +1s than -1s. The email sent should look similar, and include a link to the PPMC vote thread.

Publish

If both votes pass, the release needs to be published.

  1. Tag the release:
        svn move https://svn.apache.org/repos/asf/incubator/hcatalog/tags/release-X.Y.Z-rcR \
        https://svn.apache.org/repos/asf/incubator/hcatalog/tags/release-X.Y.Z -m "HCatalog X.Y.Z release."
    
  2. Copy release files to the distribution directory and make them writable by the hcatalog group.
        ssh people.apache.org
        cp -pr public_html/hcatalog-X.Y.Z-incubating-candidate-0 /www/www.apache.org/dist/incubator/hcatalog/hcatalog-X.Y.Z-incubating
        cd /www/www.apache.org/dist/incubator/hcatalog
        chgrp -R incubator hcatalog-X.Y.Z-incubating
        chmod -R g+w hcatalog-X.Y.Z-incubating
    
  3. The release directory usually contains just two releases, the most recent from two branches, with a link named 'stable' to the most recent recommended version.
        ssh people.apache.org
        cd /www/www.apache.org/dist/incubator/hcatalog
        rm -rf hcatalog-A.B.C-incubating; rm stable
        ln -s hcatalog-X.Y.Z-incubating stable
    
  4. Wait 24 hours for release to propagate to mirrors.
  5. Prepare to edit the website.
        svn co https://svn.apache.org/repos/asf/incubator/hcatalog/site
    
  6. Update the front page news: author/src/documentation/content/xdocs/index.xml
  7. Update the release news: author/src/documentation/content/xdocs/releases.xml
  8. Update the documentation links: author/src/documentation/content/xdocs/site.xml
  9. Copy in the release specific documentation. releasedir in the following is the directory where you built the release version of HCatalog
            cd publish
            mkdir docs/rX.Y.Z
            cp -pr <releasedir>/build/hcatalog-X.Y.Z-incubating/docs/* publish/docs/rX.Y.Z/
            svn add publish/docs/rX.Y.Z
    
  10. We should only be publishing release specific documentation for releases still available for download. If you removed any releases from /www/www.apache.org/dist/incubator/hcatalog several steps ago, then you should also use svn rm to remove the associated documents from docs.
  11. Regenerate the site, review it and commit in HowToCommit.
  12. Deploy your site changes.
        ssh people.apache.org
        cd /www/incubator.apache.org/content/hcatalog
        svn up
    
  13. Wait until you see your changes reflected on the Apache web site.
  14. Send announcements to the user and developer lists as well as (general@haoop.apache.org) once the site changes are visible.
        The HCatalog team is happy to announce the release of HCatalog X.Y.Z.
    
        Apache HCatalog provides a table management service for Hadoop.
        More details about HCatalog can be found at http://incubator.apache.org/hcatalog.
    
        The highlights of this release are ... The details of the release can be found at http://incubator.apache.org/hcatalog/releases.html.
    
  15. In JIRA, mark the release as released.
    1. Goto JIRA and click on Administration tab.
    2. Select the HCatalog project.
    3. Select Manage versions.
    4. Select Release for the version you have released.
    5. If a description has not yet been added for the version you are releasing, select Edit Details and give a brief description of the release.
    6. If the next version does not exist (that is, if you are releasing version 0.x, if version 0.x+1 does not yet exist) create it using the Add Version box at the top of the page.
  16. In JIRA, mark the issues resolved in this release as closed.
    1. Goto JIRA and click on the "Search for Issues" on "Issues" menu.
    2. In the left hand Edit section, set Project to HCatalog.
    3. In Status select "Resolved"
    4. In Resolutions select "Fixed"
    5. Click "Search" button
    6. In the next screen, further select fix For select the version you are releasing.
    7. Click on the "Search" button
    8. Select "Tools->Bulk change all XX issues" (near the top right)
    9. Select all the issues and click on "Next"
    10. Select "Transition Issues" radio button and click on "Next"
    11. Select "Close Issue" radio button and click on "Next"
    12. Uncheck the box near the bottom at says "Send mail for this update" lest you spam every HCatalog developer with a message for every bug resolved in this release. Click "Next".
    13. Click "Confirm". Don't worry if it gives you a HTTP 500 error, it still does the transitions.
  17. Update jdiff for next release (We don't have jdiff set up yet, but these next several instructions are left here so when we do we can use them)
           svn co https://svn.apache.org/repos/asf/incubator/hcatalog/trunk
    
    1. Open build.xml. Change this line:
          <property name="jdiff.stable" value="X.Y-1.Z"/>
          To
          <property name="jdiff.stable" value="X.Y.Z"/>
      
    2. Copy jdiff comparison base to trunk
          cp {releasedir}/lib/jdiff/hcatalog_X.Y.Z.xml lib/jdiff
      
          svn add lib/jdiff/hcatalog_X.Y.Z.xml
          svn remove lib/jdiff/hcatalog_X.Y-1.Z.xml
          svn commit -m "Jdiff change for X.Y.Z"
      
  • No labels