diff --git a/dev-support/create-release/README.txt b/dev-support/create-release/README.txt new file mode 100644 index 00000000000..2c6c7e7d943 --- /dev/null +++ b/dev-support/create-release/README.txt @@ -0,0 +1,41 @@ +Entrance script is _do-release-docker.sh_. Requires a local docker; +for example, on mac os x, Docker for Desktop installed and running. + +Before starting the RC build, run a reconciliation of what is in +JIRA with what is in the commit log. Make sure they align and that +anomalies are explained up in JIRA. + +See http://hbase.apache.org/book.html#maven.release + +Running a build on GCE is easy enough. Here are some notes if of use. +Create an instance. 4CPU/15G/10G disk seems to work well enough. +Once up, run the below to make your machine fit for RC building: + + +# Presuming debian-compatible OS +$ sudo apt-get install -y git openjdk-8-jdk maven gnupg gnupg-agent +# Install docker +$ sudo apt-get install -y \ + apt-transport-https \ + ca-certificates \ + curl \ + gnupg2 \ + software-properties-common +$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - +$ sudo add-apt-repository -y \ + "deb [arch=amd64] https://download.docker.com/linux/debian \ + $(lsb_release -cs) \ + stable" +$ sudo apt-get update +$ sudo apt-get install -y docker-ce docker-ce-cli containerd.io +$ sudo usermod -a -G docker $USERID +# LOGOUT and then LOGIN again so $USERID shows as part of docker groupl +# Copy up private key for $USERID export from laptop and import on gce. +$ gpg --import stack.duboce.net.asc +$ export GPG_TTY=$(tty) # https://github.com/keybase/keybase-issues/issues/2798 +$ eval $(gpg-agent --disable-scdaemon --daemon --no-grab --allow-preset-passphrase --default-cache-ttl=86400 --max-cache-ttl=86400) +$ git clone https://github.com/apache/hbase.git +$ cd hbase +$ mkdir ~/build +$ ./dev-resources/create-release/do-release-docker.sh -d ~/build +# etc. diff --git a/dev-support/create-release/do-release-docker.sh b/dev-support/create-release/do-release-docker.sh index 124bda561de..d6711bd14a5 100755 --- a/dev-support/create-release/do-release-docker.sh +++ b/dev-support/create-release/do-release-docker.sh @@ -46,7 +46,6 @@ # # 1. https://github.com/apache/spark/tree/master/dev/create-release # -set -x set -e SELF=$(cd $(dirname $0) && pwd) . "$SELF/release-util.sh" diff --git a/dev-support/create-release/do-release.sh b/dev-support/create-release/do-release.sh index 30040ebfb7d..21c52991561 100755 --- a/dev-support/create-release/do-release.sh +++ b/dev-support/create-release/do-release.sh @@ -19,7 +19,6 @@ # Called by do-release-docker.sh. Can be run standalone but needs some love # for it to work smooth. -set -x SELF=$(cd $(dirname $0) && pwd) . "$SELF/release-util.sh" diff --git a/dev-support/create-release/release-build.sh b/dev-support/create-release/release-build.sh index a34189c8320..ff1440a1274 100755 --- a/dev-support/create-release/release-build.sh +++ b/dev-support/create-release/release-build.sh @@ -16,8 +16,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # -set -x - trap cleanup EXIT SELF=$(cd $(dirname $0) && pwd) diff --git a/dev-support/create-release/release-util.sh b/dev-support/create-release/release-util.sh index f658906ddcc..e4646d14cea 100755 --- a/dev-support/create-release/release-util.sh +++ b/dev-support/create-release/release-util.sh @@ -16,7 +16,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # -set -x DRY_RUN=${DRY_RUN:-0} GPG="gpg --pinentry-mode loopback --no-tty --batch" ASF_REPO="https://gitbox.apache.org/repos/asf/hbase.git" diff --git a/src/main/asciidoc/_chapters/developer.adoc b/src/main/asciidoc/_chapters/developer.adoc index 6911a2bf0c5..4fe73ab62c0 100644 --- a/src/main/asciidoc/_chapters/developer.adoc +++ b/src/main/asciidoc/_chapters/developer.adoc @@ -548,40 +548,33 @@ For the build to sign them for you, you a properly configured _settings.xml_ in === Making a Release Candidate Only committers can make releases of hbase artifacts. -Making a Release Candidate (RC) is comprised of many involved steps. -The steps are described in detail below in the section -<> but a script that automates the process is -described first in <>. - .Before You Begin Check to be sure recent builds have been passing for the branch from where you are going to take your release. You should also have tried recent branch tips out on a cluster under load, perhaps by running the `hbase-it` integration test suite for a few hours to 'burn in' the near-candidate bits. -Make sure your environment is properly set up. - -You will need to have a published signing key added to the hbase +You will need a published signing key added to the hbase link:https://dist.apache.org/repos/dist/release/hbase/KEYS[KEYS] file. -Browse the Hadoop link:http://wiki.apache.org/hadoop/HowToRelease[How To Release] -wiki page on how to release. It is a model for the instructions below. It often has more -detail on particular steps. For example, _Step 1._ describes how to add -your code signing key to the -link:https://dist.apache.org/repos/dist/release/hbase/KEYS[KEYS] file up in Apache -(as well as outlinks on what a signing key is). +(For how to add a KEY, see _Step 1._ in link:https://cwiki.apache.org/confluence/display/HADOOP2/HowToRelease[How To Release], +the Hadoop version of this document). Next make sure JIRA is properly primed, that all issues targeted against the prospective release have been resolved and are present in git on the -particular branch. If any outstanding, move them out of the release by +particular branch. If any outstanding issues, move them out of the release by adjusting the fix version to remove this pending release as a target. Any JIRA with a fix version that matches the release candidate target release will be included in the generated _CHANGES.md/RELEASENOTES.md_ -that ship with the release so make sure JIRA is correct before you begin. -(_Step 2._ in link:http://wiki.apache.org/hadoop/HowToRelease[How To Release] -talks of how it is done in Hadoop). +files that ship with the release so make sure JIRA is correct before you begin. + +After doing the above, you can move to the manufacture of an RC. +Building an RC is involved. We've tried to script it. In the next section +we describe the script. It is followed by a description of the steps +involved which the script automates. [[do-release-docker.sh]] ==== Release Candidate Generating Script + The _dev-support/create-release/do-release-docker.sh_ Release Candidate (RC) Generating script is maintained in the master branch but can generate RCs for any 2.x+ branch (The script does not work against branch-1). Check out @@ -612,6 +605,7 @@ The script will: * Pushes to repository.apache.org staging. * Creates vote email template. +The RC building script is _dev-support/create-release/do-release-docker.sh_. Pass _-h_ to _dev-support/create-release/do-release-docker.sh_ to see available options: