Versions Compared

Key

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

...

  1. If you have not done so yet, set up your apache.org email address.
  2. Make a code signing key if you don't have one yet. This must be done on "hardware owned and controlled by the committer".
    1. Publish your key if you haven't done so yet
  3. Optional but reccomended: if you haven't done so yet, add yourself to the Apache Web-of-Trust by meeting face-to-face with a person so they can sign your key
    1. Publish your signed key
  4. If you haven't done so before, add your key to the KEYS file in the release staging area and the release distribution area using SVN.
    1. The staging area is https://dist.apache.org/repos/dist/dev/impala/
    2. The release area is https://dist.apache.org/repos/dist/release/impala/. If you are not a PMC member, you will need to ask a PMC member to edit the file for you.
  5. Pick a commit in the "master" branch you want to release from and test it.
  6. Test the licencing using Apache RAT; follow the instructions in bin/check-rat-report.py.
  7. Propose a release on the dev@ list. It should start with the string "[DISCUSS]". Explain that this is not a "[VOTE]", and that anyone may participate.
  8. Make a new branch off of your commit called "branch-x.y.z", where x.y.z is the version you want to release. If you are not on the PMC, ask a PMC member to do this:
    1. Code Block
      languagebash
      git checkout $COMMIT_HASH_YOU_CHOSE
      git checkout -b branch-x.y.z
      git push apache branch-x.y.z 
    2. In this branch (but not in master) update the version number in bin/save-version.sh to x.y.z-RELEASE
  9. Continue testing. If you find bugs, file them. When they are fixed, cherry-pick the fixes from master to your branch that you want to include in the release
    1. Code Block
      languagebash
      git fetch apache # to make sure you have the latest master
      git log apache/master # to find the commits you want to cherry-pick
      git checkout apache/branch-x.y.z
      git checkout -b x.y.z-patch-foo # the name doesn't matter - it will only be in your local workstation
      git cherry-pick b4d1a3... # or whatever git hashes
      # then resolve conflicts, if there are any
      # cherry-pick some more commits:
      git cherry-pick ....
      git cherry-pick .....
      git push apache HEAD:branch-x.y.z
    2. At that time, tag the tree at the release candidate

      Code Block
      languagebash
      git fetch apache
      git checkout apache/branch-x.y.z
      git tag -a x.y.z-rcw -m "x.y.z release candidate w" # when making release candidate w of version x.y.z
      git push apache x.y.z-rcw
  10. Make a release tarball:
    1. Make the tarball using git archive. Name it apache-impala-x.y.z.tar.gz.

      Code Block
      languagebash
      git archive --prefix=apache-impala-x.y.z/ -o /tmp/apache-impala-x.y.z.tar.gz x.y.z-rcw
    2. Make signature, as well as md5 and sha512 checksums. This must be done on "hardware owned and controlled by the committer".

      Code Block
      languagebash
      # Make the signature:
      gpg -u YOUR_APACHE_USER_NAME@apache.org --armor --output apache-impala-x.y.z.tar.gz.asc --detach-sign apache-impala-x.y.z.tar.gz
       
      # Make sure it worked:
      gpg --verify apache-impala-x.y.z.tar.gz.asc apache-impala-x.y.z.tar.gz
       
      # Make checksums:
      md5sum apache-impala-x.y.z.tar.gz > apache-impala-x.y.z.tar.gz.md5
      sha512sum apache-impala-x.y.z.tar.gz > apache-impala-x.y.z.tar.gz.sha512
       
      # Make sure they worked:
      md5sum --check apache-impala-x.y.z.tar.gz.md5
      sha512sum --check apache-impala-x.y.z.tar.gz.sha512
  11. Before uploading your release candidate, follow the procedure in the section below on how to vote on a release. Don't upload until you could vote +1.

  12. Get commitments from at least five PMC members to vote on the artifact in the time frame for the upcoming vote. The list of PMC members is available at http://people.apache.org/committers-by-project.html#impala-pmc.
  13. Upload the artifacts. The location is https://dist.apache.org/repos/dist/dev/impala/. Upload all four artifacts. Do not overwrite old release candidates.

    Code Block
    languagebash
    svn checkout https://dist.apache.org/repos/dist/dev/impala/
    cd impala/
    # The directory layout is x.y.z/RCw, where w is the release candidate number - RC1 is the first candidate, RC2 the second, and so on.
    mkdir -p x.y.z/RCw
    cd x.y.z/RCw
    cp /tmp/apache-impala-x.y.z.tar.gz* ./
    svn add .
    svn commit --username=YOUR_APACHE_USER_NAME -m "Impala x.y.z release candidate w"
  14. Prepare a patch to the downloads.html page (on the asf-site branch of the git repo) to point to the latest downloads and to remove the links to any downloads that are subsumed by this release. Do not submit the patch yet.
  15. Prepare a patch to include the changelog for the latest release on the docs site. More help on this here.
    1. Access the IMPALA Versions page
    2. Select the proper release version. They are not all in a sanely sorted order.
    3. On the top right, select "Release Notes".
    4. Select "Configure Release Notes". Ensure HTML and the proper version are set.
    5. Click Create
    6. Scroll down to find a TEXTAREA containing the HTML release notes. Copy the contents and save it to a file.
    7. Add HTML tags to make this a standalone page. For example:

      Code Block
      languagexml
      <!DOCTYPE html>
      <html>
      <head>
      <title>Impala 2.8 Change Log</title>
      </head>
      <body>
      <h1>Impala 2.8 Change Log</h1>
      <!-- contents of Jira-generated release notes go here -->
      </body>
      </html>
    8. Reorder the sections so that the issueType groupings show the more interesting groups, like New Feature, Epic, and Improvement, before less interesting groups like Sub-tasks.
    9. Provide a link to the changelog on the docs main page.
    10. Full example of this is here.
    11. If the full docs are not yet ready for the release, it's OK to leave the link to the previous release's HTML documentation so that a link to HTML documentation always exists.
  16. Take a vote on dev@. Your vote email should:
    1. Have a subject that starts with "[VOTE]"
    2. Explain what the vote is about
    3. Explain how to find the artifacts for testing, and include the tag and git tree hash (not release hash!) they correspond to. The tree hash can be viewed with git log --pretty="%T %s".
    4. Explain what each type of vote means
    5. Explain the conditions for the vote passing, including how long the vote will remain open for.
    6. Include a link to this wiki page so voters can read the instructions in it on how to test, verify, and vote. 
    7. Explain how you tested it.
    8. At your discretion, discuss what dependencies or tools you used to compile or run it, like gcc, hadoop, impala-lzo, and so on.
    9. Be consistent with the Impala bylaws. For instance, at the moment I am writing this wiki page, votes stay open for 72 hours (not counting weekends), and only PMC members have binding votes.
  17. When the vote closes, tally up the votes (who votes what) in a thread with the same title as the vote thread, but with "[RESULT] " prepended. Link to the vote thread form https://lists.apache.org/list.html?dev@impala.apache.org. The email should include a list of every vote, and reasons for the -1s ala:

    No Format
    nopaneltrue
    +1 (binding):
     
    Alice Bobopolis
    Carol Davestein
     
    -1 (non-binding):
     
    Emily Frankfurt (Build failed)
  18. If that vote passes, tag the git tree at the release:

    Code Block
    languagebash
    git fetch apache
    git checkout apache/branch-x.y.z
    git tag -a x.y.z -m "x.y.z release"
    git push apache x.y.z
  19. Publish the release. The location is https://dist.apache.org/repos/dist/release/impala/. Upload all four artifacts. If you are not a PMC member, you will need a PMC member to do the upload fo you.

    Code Block
    languagebash
    svn checkout https://dist.apache.org/repos/dist/release/impala/
    cd impala/
    mkdir x.y.z
    cd x.y.z
    cp /tmp/apache-impala-x.y.z.tar.gz* ./
    svn add .
    svn commit --username=YOUR_APACHE_USER_NAME
    # You will be prompted to write a commit message. Make it look like (without the '#'s):
    #
    # Impala release x.y.z
    # 
    # PMC vote thread: ...
    #
    # PMC vote results thread: ...
    
  20. Wait 24 hours for mirrors to catch up.
  21. Push your downloads.html and changelog patches.
  22. Announce the release to dev@impala.apache.org, user@impala.apache.org, and announce@apache.org. The email must come from your apache.org email address.
    1. If you are not already subscribed from your @apache.org address, subscribe to dev@ and user@ by mailing dev-subscribe@ and user-subscribe@.
    2. Give your email a subject like "[ANNOUNCE] Apache Impala x.y.z release", and include in the body:

      No Format
      nopaneltrue
      The Apache Impala team is pleased to announce the release of Impala x.y.z.
       
      Impala is a high-performance distributed SQL engine.
       
      The release is available at: https://impala.apache.org/downloads.html
       
      Thanks,
       
      The Apache Impala team


  23. Announce the release on the community links listed on https://impala.apache.org/community.html.
  24. Send a patch review to the master branch to update its version number to "p.q.r-SNAPSHOT" (where p.q.r is greater than x.y.z)
  25. In the issue tracker, "Release" the version on this screen: https://issues.apache.org/jira/plugins/servlet/project-config/IMPALA/versions. This gives you an option to change the target version for open tickets targeted at x.y.z to p.q.r. You may need to create a version p.q.r if it does not already exist.
  26. In the issue tracker, "Release" the version on this screen: https://issues.apache.org/jira/plugins/servlet/project-config/IMPALA/versions.
  27. In the SVN repo where you put the final release artifacts, delete the previous release, assuming that branch is no longer being actively worked on. If there is more than one active branch, leave the latest release from each branch up. If you are not a PMC member, you will need a PMC member do that for you.

...