This document gives the steps required to perform a Kudu release, and is a resource
for Kudu release managers. To edit or update this document, edit RELEASING.adoc
in master
.
-
A week before branching: send an email to [email protected] to announce that the branch will be happening, including a deadline for when new commits will need gatekeeper approval.
-
A day before branching: send another email to [email protected] to warn about it.
-
Create a new branch from master:
git checkout master git pull git checkout -b branch-0.9.x
-
Make a note of the SHA1 for the tip of the new branch, which is the first field of the result of this command:
git log --oneline -n1
-
Push the branch to public remotes https://github.com/cloudera/kudu.git and http://git-wip-us.apache.org/repos/asf?p=kudu.git. The following example assumes they are called
cloudera
andapache
.git push branch-0.9.x cloudera git push branch-0.9.x apache
-
Create a new branch on Gerrit. Go to http://gerrit.cloudera.org:8080/#/admin/projects/kudu,branches and create a new branch with the same name and the previously-noted SHA1.
-
Notify Todd to fix the mirroring. He will know what that means.
-
As needed, patches can be cherry-picked to the new branch.
-
Check out the
master
branch and bump the version inversion.txt
. -
Update the version for the Java client from within the
java
directory:cd java mvn versions:set -DnewVersion=0.X.0-SNAPSHOT
-
If the python API has changed since the previous release, bump the Python version in
python/setup.py
in master. (the Python API uses separate versioning). -
After all the versions are updated, commit and push that change to Gerrit.
-
Notify [email protected] that the new branch is available.
-
When close to building a release candidate, try building a source tarball (on a supported platform):
./build-support/build_source_release.py
-
Fix any issues it finds, such as RAT.
-
Remove the -SNAPSHOT from the version string in
version.txt
. -
When ready, create a new lightweight tag and push it to the Apache Git repository.
git tag 1.x.0-RC1 git push apache 1.x.0-RC1
-
Build a source tarball against the RC branch.
-
Create a new folder in https://dist.apache.org/repos/dist/dev/kudu/. Copy the artifacts to this folder and commit (it is Subversion).
svn co --depth=immediates https://dist.apache.org/repos/dist/dev/kudu/ svn commit -m "Adding Kudu 1.x.0 RC1"
-
Send an email to [email protected] to start the RC process, using this example as a template.
-
Reminder that voting on a release requires a Majority Approval by the PMC.
-
Cycle through as many RCs as required.
-
Always send an email with a different subject to indicate the result. For example.
-
After the vote passes, send an email to [email protected] indicating the result.
-
Create a new folder in https://dist.apache.org/repos/dist/release/kudu/, copy the files from the release candidate’s folder in dist/dev/kudu/, then commit.
cd kudu mkdir 0.9.2 cp <path_to_rc_artifacts>/* 0.9.2 svn add 0.9.2 svn commit -m "Adding files for Kudu 0.9.2 RC"
-
In the Kudu git repo, create a signed tag from the RC’s tag, and push it to the Apache Git repository:
git tag -s 0.9.2 -m 'Release Apache Kudu 0.9.2' 0.9.2-RC1 git push apache 0.9.2-RC1
-
Generate the version-specific documentation from that branch following these instructions.
-
Replace the
apidocs
anddocs
folders in thegh-pages
branch with the new documentation. -
Update the
index.md
file in the releases folder, add a new folder named after the release version, copy theapidocs
anddocs
folders there, copy anindex.md
file from one of the other releases and modify it accordingly. -
Commit all these changes.
-
Create a new review for all those new and updated files in
gh-pages
. -
Once the review is finished and the commit is pushed, update the website.
-
About 24 hours after the first step was completed, send an email to [email protected], [email protected], and [email protected] to announce the release. The email should be similar to [email protected]%3E">this.
-
About another 24 hours later, delete the previous minor version in the branch you released from, from SVN. For example, if you released 1.2.1, delete
1.2.0
. -
Update the version number on the branch you released from back to a SNAPSHOT for the next patch release, such as
0.9.2-SNAPSHOT
after the0.9.1
release.