You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

When Quickstep updates with new functionality or improvements, we release quickstep as a tarball. A release manager is responsible for executing this process.

Release Managers

Release managers is a self-selected committer whose responsibility it is to go through this release process. This involves creating the release artifacts, counting votes, and publishing release artifacts. This is covered in detail below.

Step-by-step Release Guide

SVN Repo for release candidates: https://dist.apache.org/repos/dist/dev/incubator/quickstep

SVN Repo for final releases: https://dist.apache.org/repos/dist/release/incubator/quickstep

Prerequisites

As a release manager, you have a couple of base steps which will not be repeated after you go through this process once. 

  • Set up your apache email

  • Set up your apache gpg key [help]

    • Created a pgp key using your apache username. Per Apache, this must be on your hardware.

    • Uploaded it to a public keyserver

    • Added it to the KEYS file in the dev svn repo. Later, you will add it to the rel svn repo

    • [optional] Made sure someone in the group has validated your key

Overview

  1. Release Candidate Phase
    1. Make and publish a release candidate
      1. Select a commit to base the release
      2. Branch and tag the commit
      3. Create the release artifacts
      4. Publish the release artifacts to the dev SVN repo
    2. Vote on the release candidate
      1. Send a VOTE email
      2. Wait 72 hours
      3. Send a follow up email with results
      4. IF Vote passes, GOTO 2. ELSE GOTO 1
  2. Release Phase
    1. Make and publish release

1. Release Candidate Phase

In this phase, we decide which commits will go into the release. We publish dev artifacts and the community votes if it should progress to a final release. Releases have a version (x.y.z) and candidates have a candidate version (rcX). There can be multiple candidates but only one release.

a. Make and publish a release candidate

These steps are somewhat covered in the script on Marc Spehlmann's gist. The individual steps below explain what happens in the script. Also, the script must be modified to do some of things covered here. It's a rough guide.

i. Select a commit to base the release

You will create a release branch if this is the first release candidate. Otherwise, checkout the current release branch.

 

git checkout $COMMIT_HASH_YOU_CHOSE
git checkout -b branch-x.y.z
git push apache branch-x.y.z

ii. Branch and tag the commit

Test the branch and add commits as needed. If you are on a non-supported platform (mac), use a linux box or docker to test your release. A quickstep Dockerfile can be found here. Once you are happy with the candidate, tag the branch and push the update.

 
git fetch apache # to make sure you have the latest master
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
Do the tag
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

iii. Create the release artifacts

This step involves several steps. First, you create the tarball. Next you will create hashes, and a signature. Full details are provided in the script.

iii. Publish the release artifacts to the dev SVN repo

svn checkout https://dist.apache.org/repos/dist/dev/incubator/quickstep/cd quickstep/
# 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-quickstep-incubating-x.y.z.tar.gz* ./
svn add .
svn commit --username=YOUR_APACHE_USER_NAME -m "Quickstep-x.y.z RCw"

b. Make a vote on the Release Candidate

    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, and so on.

DRAFT: How to Release - Impala's release guide which we liberally borrowed from.

There is no content with the specified labels

  • No labels