| // Licensed to the Apache Software Foundation (ASF) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The ASF licenses this file |
| // to you under the Apache License, Version 2.0 (the |
| // "License"); you may not use this file except in compliance |
| // with the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, |
| // software distributed under the License is distributed on an |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| // KIND, either express or implied. See the License for the |
| // specific language governing permissions and limitations |
| // under the License. |
| |
| = RELEASING KUDU |
| |
| == Overview |
| |
| 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`. |
| |
| == Stating Intent to Release |
| |
| . *A week before branching*: send an email to dev@kudu.apache.org 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 dev@kudu.apache.org |
| to warn about it. |
| |
| == Creating the Branch |
| |
| . 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` and `apache`. |
| + |
| ---- |
| 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. |
| |
| == Updating Versions In Master |
| |
| . Check out the `master` branch and bump the version in `version.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 dev@kudu.apache.org that the new branch is available. |
| |
| |
| == Preparing A Release Candidate |
| |
| . 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" |
| ---- |
| |
| Initiating a Vote for an RC |
| ---------------------------- |
| |
| . Send an email to dev@kudu.apache.org to start the RC process, using |
| this |
| link:http://mail-archives.apache.org/mod_mbox/kudu-dev/201606.mbox/%3CCAGpTDNduoQM0ktuZc1eW1XeXCcXhvPGftJ%3DLRB8Er5c2dZptvw%40mail.gmail.com%3E[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 |
| link:http://mail-archives.apache.org/mod_mbox/kudu-dev/201606.mbox/%3CCAGpTDNeJdU%2BoUF4ZJneZt%3DCfFHY-HoqKgORwVuWWUMHq5jBNzA%40mail.gmail.com%3E[example]. |
| |
| . After the vote passes, send an email to dev@kudu.apache.org |
| indicating the result. |
| |
| == Release |
| |
| . 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 |
| link:https://github.com/apache/kudu/#updating-the-documentation-on-the-kudu-web-site[instructions]. |
| |
| . Replace the `apidocs` and `docs` folders in the `gh-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 the `apidocs` and `docs` folders there, copy an `index.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 |
| user@kudu.apache.org, dev@kudu.apache.org, and announce@apache.org |
| to announce the release. The email should be similar to |
| link:http://mail-archives.us.apache.org/mod_mbox/www-announce/201606.mbox/%3CCAGpTDNeHW53US=qdpQPCQk0WaFBxx_KNx1E9b6NBBnbWpkSpmQ@mail.gmail.com%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 the `0.9.1` release. |