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 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.
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
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 [how-to guide]
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
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). See this SO post about version naming. There can be multiple candidates but only one release.
These steps are somewhat covered in the script in the release/ folder of quickstep. 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.
You will create a release branch if this is the first release candidate. Otherwise, checkout the current release branch.
git checkout $COMMIT_HASH_YOU_CHOSEgit checkout -b branch-x.y.zgit push apache branch-x.y.zTest 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 mastergit checkout apache/branch-x.y.zgit checkout -b x.y.z-patch-foo # the name doesn't matter - it will only be in your local workstationgit 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.zgit fetch apachegit checkout apache/branch-x.y.zgit tag -a x.y.z-rcw -m "x.y.z release candidate w" # when making release candidate w of version x.y.zgit push apache x.y.z-rcwThis step involves several steps. First, you create the tarball. Next you will create hashes, and a signature. Full details are provided in the script.
You should also verify that every source file has an Apache-approved header. Apache has a script for this process, it's called apache rat.
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/RCwcd x.y.z/RCwcp /tmp/apache-quickstep-incubating-x.y.z.tar.gz* ./svn add .svn commit --username=YOUR_APACHE_USER_NAME -m "Quickstep-x.y.z RCw"There is a template for creating these emails here. Otherwise, follow these guidelines:
If the vote passes, and Quickstep has yet to graduate, take a vote in the incubator PMC, following current incubator policy.
This vote will be open for at least 72 hours, or until the necessary number of votes (3 +1) is reached. [ ] +1 Approve the release [ ] -1 Don't approve the release (please provide specific comments)
Like with the dev@ vote, post a "[RESULT]" thread to general@ with the results.
Once that vote passes, tag the git tree at the release:
git fetch apachegit checkout apache/branch-x.y.zgit tag -a x.y.z -m "x.y.z release"git push apache x.y.z |
Publish the release. While incubating, the location is this repo. Upload all four artifacts.
cd quickstep/mkdir x.y.zcd x.y.zcp /tmp/apache-quickstep-incubating-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):## Quickstep release x.y.z## PPMC vote thread: ...## PPMC vote results thread: ...## IPMC vote thread: ...## IPMC vote results thread: ... |
Give your email a subject like "[ANNOUNCE] Apache Quickstep (incubating) x.y.z release", and include in the body:
The Apache Quickstep (incubating) team is pleased to announce the release of Quickstep x.y.z. Quickstep is a high-performance C++ SQL query engine. The release is available at: https://quickstep.incubator.apache.org/release Thanks, The Apache Quickstep (incubating) team ===== *Disclaimer* Apache Quickstep is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the name of Apache Incubator PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
Related articles
How to Release - Impala's release guide which we liberally borrowed from.
|