You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2019/06/09 21:05:25 UTC
[hbase] branch branch-2.0 updated: Revert "HBASE-21935 Replace
make_rc.sh with customized spark/dev/create-release" Undo premature commit.
This is an automated email from the ASF dual-hosted git repository.
stack pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2.0 by this push:
new dfbefd5 Revert "HBASE-21935 Replace make_rc.sh with customized spark/dev/create-release" Undo premature commit.
dfbefd5 is described below
commit dfbefd58a0f79b5481bba2f3afe18676b4c82de7
Author: stack <st...@apache.org>
AuthorDate: Sun Jun 9 14:05:05 2019 -0700
Revert "HBASE-21935 Replace make_rc.sh with customized spark/dev/create-release"
Undo premature commit.
This reverts commit ddbee693e6145e63360b2f553adb5bdad994b41c.
---
dev-support/create-release/do-release-docker.sh | 165 ------------
dev-support/create-release/do-release.sh | 81 ------
dev-support/create-release/hbase-rm/Dockerfile | 47 ----
dev-support/create-release/release-build.sh | 343 ------------------------
dev-support/create-release/release-tag.sh | 101 -------
dev-support/create-release/release-util.sh | 288 --------------------
dev-support/create-release/vote.tmpl | 33 ---
7 files changed, 1058 deletions(-)
diff --git a/dev-support/create-release/do-release-docker.sh b/dev-support/create-release/do-release-docker.sh
deleted file mode 100755
index 5c845fe..0000000
--- a/dev-support/create-release/do-release-docker.sh
+++ /dev/null
@@ -1,165 +0,0 @@
-#!/usr/bin/env bash
-
-#
-# 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.
-#
-
-#
-# Creates a HBase release candidate. The script will update versions, tag the branch,
-# build HBase binary packages and documentation, and upload maven artifacts to a staging
-# repository. There is also a dry run mode where only local builds are performed, and
-# nothing is uploaded to the ASF repos.
-#
-# Run with "-h" for options. For example, running below will do all
-# steps above using the 'rm' dir under Downloads as workspace:
-#
-# $ ./do-release-docker.sh -d ~/Downloads/rm
-#
-# The scripts in this directory came originally from spark [1]. They were then
-# modified to suite the hbase context. These scripts supercedes the old
-# ../make_rc.sh script for making release candidates because what is here is more
-# comprehensive doing more steps of the RM process as well as running in a
-# container so the RM build environment can be a constant.
-#
-# It:
-# * Tags release
-# * Sets version to the release version
-# * Sets version to next SNAPSHOT version.
-# * Builds, signs, and hashes all artifacts.
-# * Pushes release tgzs to the dev dir in a apache dist.
-# * Pushes to repository.apache.org staging.
-#
-# The entry point is here, in the do-release-docker.sh script.
-#
-# 1. https://github.com/apache/spark/tree/master/dev/create-release
-#
-set -x
-set -e
-SELF=$(cd $(dirname $0) && pwd)
-. "$SELF/release-util.sh"
-
-function usage {
- local NAME=$(basename $0)
- cat <<EOF
-Usage: $NAME [options]
-
-This script runs the release scripts inside a docker image. The image is hardcoded to be called
-"hbase-rm" and will be re-generated (as needed) on every invocation of this script.
-
-Options are:
-
- -d [path] : required: working directory (output will be written to an "output" directory in
- the working directory).
- -n : dry run mode. Performs checks and local builds, but does not upload anything.
- -t [tag] : tag for the hbase-rm docker image to use for building (default: "latest").
- -j [path] : path to local JDK installation to use for building. By default the script will
- use openjdk8 installed in the docker image.
- -s [step] : runs a single step of the process; valid steps are: tag, build, publish. if
- none specified, runs tag, then build, and then publish.
-EOF
-}
-
-WORKDIR=
-IMGTAG=latest
-JAVA=
-RELEASE_STEP=
-while getopts "d:hj:ns:t:" opt; do
- case $opt in
- d) WORKDIR="$OPTARG" ;;
- n) DRY_RUN=1 ;;
- t) IMGTAG="$OPTARG" ;;
- j) JAVA="$OPTARG" ;;
- s) RELEASE_STEP="$OPTARG" ;;
- h) usage ;;
- ?) error "Invalid option. Run with -h for help." ;;
- esac
-done
-
-if [ -z "$WORKDIR" ] || [ ! -d "$WORKDIR" ]; then
- error "Work directory (-d) must be defined and exist. Run with -h for help."
-fi
-
-if [ -d "$WORKDIR/output" ]; then
- read -p "Output directory already exists. Overwrite and continue? [y/n] " ANSWER
- if [ "$ANSWER" != "y" ]; then
- error "Exiting."
- fi
-fi
-
-cd "$WORKDIR"
-rm -rf "$WORKDIR/output"
-mkdir "$WORKDIR/output"
-
-get_release_info
-
-# Place all RM scripts and necessary data in a local directory that must be defined in the command
-# line. This directory is mounted into the image. Its WORKDIR, the arg passed with -d.
-for f in "$SELF"/*; do
- if [ -f "$f" ]; then
- cp "$f" "$WORKDIR"
- fi
-done
-
-GPG_KEY_FILE="$WORKDIR/gpg.key"
-fcreate_secure "$GPG_KEY_FILE"
-$GPG --passphrase $GPG_PASSPHRASE --export-secret-key --armor "$GPG_KEY" > "$GPG_KEY_FILE"
-
-run_silent "Building hbase-rm image with tag $IMGTAG..." "docker-build.log" \
- docker build -t "hbase-rm:$IMGTAG" --build-arg UID=$UID "$SELF/hbase-rm"
-
-# Write the release information to a file with environment variables to be used when running the
-# image.
-ENVFILE="$WORKDIR/env.list"
-fcreate_secure "$ENVFILE"
-
-function cleanup {
- rm -f "$ENVFILE"
- rm -f "$GPG_KEY_FILE"
-}
-
-trap cleanup EXIT
-
-cat > $ENVFILE <<EOF
-DRY_RUN=$DRY_RUN
-SKIP_TAG=$SKIP_TAG
-RUNNING_IN_DOCKER=1
-GIT_BRANCH=$GIT_BRANCH
-NEXT_VERSION=$NEXT_VERSION
-RELEASE_VERSION=$RELEASE_VERSION
-RELEASE_TAG=$RELEASE_TAG
-GIT_REF=$GIT_REF
-HBASE_PACKAGE_VERSION=$HBASE_PACKAGE_VERSION
-ASF_USERNAME=$ASF_USERNAME
-GIT_NAME=$GIT_NAME
-GIT_EMAIL=$GIT_EMAIL
-GPG_KEY=$GPG_KEY
-ASF_PASSWORD=$ASF_PASSWORD
-GPG_PASSPHRASE=$GPG_PASSPHRASE
-RELEASE_STEP=$RELEASE_STEP
-EOF
-
-JAVA_VOL=
-if [ -n "$JAVA" ]; then
- echo "JAVA_HOME=/opt/hbase-java" >> $ENVFILE
- JAVA_VOL="--volume $JAVA:/opt/hbase-java"
-fi
-
-echo "Building $RELEASE_TAG; output will be at $WORKDIR/output"
-docker run -ti \
- --env-file "$ENVFILE" \
- --volume "$WORKDIR:/opt/hbase-rm" \
- $JAVA_VOL \
- "hbase-rm:$IMGTAG"
diff --git a/dev-support/create-release/do-release.sh b/dev-support/create-release/do-release.sh
deleted file mode 100755
index 30040eb..0000000
--- a/dev-support/create-release/do-release.sh
+++ /dev/null
@@ -1,81 +0,0 @@
-#!/usr/bin/env bash
-
-#
-# 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.
-#
-
-# 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"
-
-while getopts "bn" opt; do
- case $opt in
- b) GIT_BRANCH=$OPTARG ;;
- n) DRY_RUN=1 ;;
- ?) error "Invalid option: $OPTARG" ;;
- esac
-done
-
-if [ "$RUNNING_IN_DOCKER" = "1" ]; then
- # Run gpg agent.
- eval $(gpg-agent --disable-scdaemon --daemon --no-grab --allow-preset-passphrase --default-cache-ttl=86400 --max-cache-ttl=86400)
- echo "GPG Version: `gpg --version`"
- # Inside docker, need to import the GPG key stored in the current directory.
- echo $GPG_PASSPHRASE | $GPG --passphrase-fd 0 --import "$SELF/gpg.key"
-
- # We may need to adjust the path since JAVA_HOME may be overridden by the driver script.
- if [ -n "$JAVA_HOME" ]; then
- export PATH="$JAVA_HOME/bin:$PATH"
- else
- # JAVA_HOME for the openjdk package.
- export JAVA_HOME=/usr
- fi
-else
- # Outside docker, need to ask for information about the release.
- get_release_info
-fi
-export GPG_TTY=$(tty)
-
-function should_build {
- local WHAT=$1
- [ -z "$RELEASE_STEP" ] || [ "$WHAT" = "$RELEASE_STEP" ]
-}
-
-if should_build "tag" && [ $SKIP_TAG = 0 ]; then
- run_silent "Creating release tag $RELEASE_TAG..." "tag.log" \
- "$SELF/release-tag.sh"
- echo "It may take some time for the tag to be synchronized to github."
- echo "Press enter when you've verified that the new tag ($RELEASE_TAG) is available."
- read
-else
- echo "Skipping tag creation for $RELEASE_TAG."
-fi
-
-if should_build "build"; then
- run_silent "Building HBase..." "build.log" \
- "$SELF/release-build.sh" build
-else
- echo "Skipping build step."
-fi
-
-if should_build "publish"; then
- run_silent "Publishing release" "publish.log" \
- "$SELF/release-build.sh" publish-release
-else
- echo "Skipping publish step."
-fi
diff --git a/dev-support/create-release/hbase-rm/Dockerfile b/dev-support/create-release/hbase-rm/Dockerfile
deleted file mode 100644
index 092b418..0000000
--- a/dev-support/create-release/hbase-rm/Dockerfile
+++ /dev/null
@@ -1,47 +0,0 @@
-#
-# 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.
-#
-
-# Image for building HBase releases. Based on Ubuntu 16.04.
-#
-# Includes:
-# * Java 8
-FROM ubuntu:18.04
-
-# These arguments are just for reuse and not really meant to be customized.
-ARG APT_INSTALL="apt-get install --no-install-recommends -y"
-
-# Install extra needed repos and refresh.
-#
-# This is all in a single "RUN" command so that if anything changes, "apt update" is run to fetch
-# the most current package versions (instead of potentially using old versions cached by docker).
-RUN apt-get clean && \
- apt-get update && \
- # Install openjdk 8.
- $APT_INSTALL openjdk-8-jdk && \
- update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java && \
- # Install build / source control tools
- $APT_INSTALL curl gnupg python-pip wget git maven subversion lsof \
- libcurl4-openssl-dev libxml2-dev && \
- pip install python-dateutil
-
-WORKDIR /opt/hbase-rm/output
-
-ARG UID
-RUN useradd -m -s /bin/bash -p hbase-rm -u $UID hbase-rm
-USER hbase-rm:hbase-rm
-
-ENTRYPOINT [ "/opt/hbase-rm/do-release.sh" ]
diff --git a/dev-support/create-release/release-build.sh b/dev-support/create-release/release-build.sh
deleted file mode 100755
index 5a542d4..0000000
--- a/dev-support/create-release/release-build.sh
+++ /dev/null
@@ -1,343 +0,0 @@
-#!/usr/bin/env bash
-
-#
-# 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.
-#
-set -x
-
-trap cleanup EXIT
-
-SELF=$(cd $(dirname $0) && pwd)
-. "$SELF/release-util.sh"
-
-function exit_with_usage {
- cat << EOF
-usage: release-build.sh <package|docs|publish-snapshot|publish-release>
-Creates build deliverables from an HBase commit.
-
-Top level targets are
- build: Create binary packages and commit them to dist.apache.org/repos/dist/dev/hbase/
- publish-snapshot: Publish snapshot release to Apache snapshots
- publish-release: Publish a release to Apache release repo
-
-All other inputs are environment variables
-
-GIT_REF - Release tag or commit to build from
-HBASE_PACKAGE_VERSION - Release identifier in top level package directory (e.g. 2.1.2RC1)
-HBASE_VERSION - (optional) Version of HBase being built (e.g. 2.1.2)
-
-ASF_USERNAME - Username of ASF committer account
-ASF_PASSWORD - Password of ASF committer account
-
-GPG_KEY - GPG key used to sign release artifacts
-GPG_PASSPHRASE - Passphrase for GPG key
-EOF
- exit 1
-}
-
-set -e
-
-function cleanup {
- rm ${tmp_settings} &> /dev/null
-}
-
-if [ $# -eq 0 ]; then
- exit_with_usage
-fi
-
-if [[ $@ == *"help"* ]]; then
- exit_with_usage
-fi
-
-if [[ -z "$ASF_PASSWORD" ]]; then
- echo 'The environment variable ASF_PASSWORD is not set. Enter the password.'
- echo
- stty -echo && printf "ASF password: " && read ASF_PASSWORD && printf '\n' && stty echo
-fi
-
-if [[ -z "$GPG_PASSPHRASE" ]]; then
- echo 'The environment variable GPG_PASSPHRASE is not set. Enter the passphrase to'
- echo 'unlock the GPG signing key that will be used to sign the release!'
- echo
- stty -echo && printf "GPG passphrase: " && read GPG_PASSPHRASE && printf '\n' && stty echo
- export GPG_PASSPHRASE
- export GPG_TTY=$(tty)
-fi
-
-for env in ASF_USERNAME GPG_PASSPHRASE GPG_KEY; do
- if [ -z "${!env}" ]; then
- echo "ERROR: $env must be set to run this script"
- exit_with_usage
- fi
-done
-
-export LC_ALL=C.UTF-8
-export LANG=C.UTF-8
-
-# Commit ref to checkout when building
-GIT_REF=${GIT_REF:-master}
-
-RELEASE_STAGING_LOCATION="https://dist.apache.org/repos/dist/dev/hbase"
-
-GPG="gpg --pinentry-mode loopback -u $GPG_KEY --no-tty --batch"
-NEXUS_ROOT=https://repository.apache.org/service/local/staging
-NEXUS_PROFILE=8e226b97c0c82 # Profile for HBase staging uploads via INFRA-17900 Need nexus "staging profile id" for the hbase project
-BASE_DIR=$(pwd)
-
-init_java
-init_mvn
-init_python
-
-rm -rf hbase
-git clone "$ASF_REPO"
-cd hbase
-git checkout $GIT_REF
-git_hash=`git rev-parse --short HEAD`
-echo "Checked out HBase git hash $git_hash"
-
-if [ -z "$HBASE_VERSION" ]; then
- # Run $MVN in a separate command so that 'set -e' does the right thing.
- TMP=$(mktemp)
- $MVN help:evaluate -Dexpression=project.version > $TMP
- HBASE_VERSION=$(cat $TMP | grep -v INFO | grep -v WARNING | grep -v Download)
- rm $TMP
-fi
-
-# Profiles for publishing snapshots and release to Maven Central
-PUBLISH_PROFILES="-Papache-release -Prelease"
-
-if [[ ! $HBASE_VERSION < "2.0." ]]; then
- if [[ $JAVA_VERSION < "1.8." ]]; then
- echo "Java version $JAVA_VERSION is less than required 1.8 for 2.0+"
- echo "Please set JAVA_HOME correctly."
- exit 1
- fi
-else
- if ! [[ $JAVA_VERSION =~ 1\.7\..* ]]; then
- if [ -z "$JAVA_7_HOME" ]; then
- echo "Java version $JAVA_VERSION is higher than required 1.7 for pre-2.0"
- echo "Please set JAVA_HOME correctly."
- exit 1
- else
- export JAVA_HOME="$JAVA_7_HOME"
- fi
- fi
-fi
-
-# This is a band-aid fix to avoid the failure of Maven nightly snapshot in some Jenkins
-# machines by explicitly calling /usr/sbin/lsof. Please see SPARK-22377 and the discussion
-# in its pull request.
-LSOF=lsof
-if ! hash $LSOF 2>/dev/null; then
- LSOF=/usr/sbin/lsof
-fi
-
-if [ -z "$HBASE_PACKAGE_VERSION" ]; then
- HBASE_PACKAGE_VERSION="${HBASE_VERSION}-$(date +%Y_%m_%d_%H_%M)-${git_hash}"
-fi
-
-DEST_DIR_NAME="$HBASE_PACKAGE_VERSION"
-
-git clean -d -f -x
-cd ..
-tmp_repo=`pwd`/$(mktemp -d hbase-repo-XXXXX)
-# Reexamine. Not sure this working. Pass as arg? That don't seem to work either!
-tmp_settings="/${tmp_repo}/tmp-settings.xml"
-echo "<settings><servers>" > $tmp_settings
-echo "<server><id>apache.snapshots.https</id><username>$ASF_USERNAME</username>" >> $tmp_settings
-echo "<password>$ASF_PASSWORD</password></server>" >> $tmp_settings
-echo "<server><id>apache-release</id><username>$ASF_USERNAME</username>" >> $tmp_settings
-echo "<password>$ASF_PASSWORD</password></server>" >> $tmp_settings
-echo "</servers>" >> $tmp_settings
-echo "</settings>" >> $tmp_settings
-export tmp_settings
-
-if [[ "$1" == "build" ]]; then
- # Source and binary tarballs
- echo "Packaging release source tarballs"
- # Tar up the src and sign and hash it.
- rm -rf hbase-$HBASE_VERSION-src*
- ls
- cd hbase
- git clean -d -f -x
- git archive --format=tar.gz --output=../hbase-$HBASE_VERSION-src.tar.gz --prefix=hbase-"${HBASE_VERSION}/" "${GIT_REF}"
- cd ..
- echo $GPG_PASSPHRASE | $GPG --passphrase-fd 0 --armour --output hbase-$HBASE_VERSION-src.tar.gz.asc \
- --detach-sig hbase-$HBASE_VERSION-src.tar.gz
- echo $GPG_PASSPHRASE | $GPG --passphrase-fd 0 --print-md \
- SHA512 hbase-$HBASE_VERSION-src.tar.gz > hbase-$HBASE_VERSION-src.tar.gz.sha512
-
-
- # Add timestamps to mvn logs.
- MAVEN_OPTS="-Dorg.slf4j.simpleLogger.showDateTime=true -Dorg.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss ${MAVEN_OPTS}"
-
- # Updated for each binary build; spark did many. HBase does one bin only.
- make_binary_release() {
-
- echo "`date -u +'%Y-%m-%dT%H:%M:%SZ'` Building binary dist"
- cd hbase
-
- # Get maven home set by MVN
- MVN_HOME=`$MVN -version 2>&1 | grep 'Maven home' | awk '{print $NF}'`
-
- echo "`date -u +'%Y-%m-%dT%H:%M:%SZ'` Assembly"
- git clean -d -f -x
- # Three invocations of maven. This seems to work. One to
- # populate the repo, another to build the site, and then
- # a third to assemble the binary artifact. Trying to do
- # all in the one invocation fails; a problem in our
- # assembly spec to in maven. TODO. Meantime, three invocations.
- MAVEN_OPTS="${MAVEN_OPTS}" ${MVN} --settings $tmp_settings \
- clean install -DskipTests \
- -Dmaven.repo.local=${tmp_repo}
- MAVEN_OPTS="${MAVEN_OPTS}" ${MVN} --settings $tmp_settings \
- site -DskipTests \
- -Dmaven.repo.local=${tmp_repo}
- MAVEN_OPTS="${MAVEN_OPTS}" ${MVN} --settings $tmp_settings \
- install assembly:single -DskipTests \
- -Dcheckstyle.skip=true ${PUBLISH_PROFILES} \
- -Dmaven.repo.local=${tmp_repo}
-
- echo "`date -u +'%Y-%m-%dT%H:%M:%SZ'` Copying and signing regular binary distribution"
- cp ./hbase-assembly/target/hbase-$HBASE_VERSION*-bin.tar.gz ..
- cd ..
- echo $GPG_PASSPHRASE | $GPG --passphrase-fd 0 --armour \
- --output hbase-$HBASE_VERSION-bin.tar.gz.asc \
- --detach-sig hbase-$HBASE_VERSION-bin.tar.gz
- echo $GPG_PASSPHRASE | $GPG --passphrase-fd 0 --print-md \
- SHA512 hbase-$HBASE_VERSION-bin.tar.gz > \
- hbase-$HBASE_VERSION-bin.tar.gz.sha512
- }
-
- make_binary_release
-
- if ! is_dry_run; then
- svn co --depth=empty $RELEASE_STAGING_LOCATION svn-hbase
- rm -rf "svn-hbase/${DEST_DIR_NAME}"
- mkdir -p "svn-hbase/${DEST_DIR_NAME}"
-
- echo "Copying release tarballs"
- cp hbase-*.tar.* "svn-hbase/${DEST_DIR_NAME}/"
- cp hbase/CHANGES.md "svn-hbase/${DEST_DIR_NAME}/"
- cp hbase/RELEASENOTES.md "svn-hbase/${DEST_DIR_NAME}/"
- generate_api_report ./hbase ${PREV_REL_TAG} ${RELEASE_TAG}
- cp api*.html "svn-hbase/${DEST_DIR_NAME}/"
-
- svn add "svn-hbase/${DEST_DIR_NAME}"
-
- cd svn-hbase
- svn ci --username $ASF_USERNAME --password "$ASF_PASSWORD" -m"Apache HBase $HBASE_PACKAGE_VERSION" --no-auth-cache
- cd ..
- rm -rf svn-hbase
- fi
-
- exit 0
-fi
-
-if [[ "$1" == "publish-snapshot" ]]; then
- cd hbase
- # Publish HBase to Maven release repo
- echo "Deploying HBase SNAPSHOT at '$GIT_REF' ($git_hash)"
- echo "Publish version is $HBASE_VERSION"
- if [[ ! $HBASE_VERSION == *"SNAPSHOT"* ]]; then
- echo "ERROR: Snapshots must have a version containing SNAPSHOT"
- echo "ERROR: You gave version '$HBASE_VERSION'"
- exit 1
- fi
- # Coerce the requested version
- $MVN versions:set -DnewVersion=$HBASE_VERSION
- $MVN --settings $tmp_settings -DskipTests $PUBLISH_PROFILES deploy
- cd ..
- exit 0
-fi
-
-if [[ "$1" == "publish-release" ]]; then
- cd hbase
- # Publish HBase to Maven release repo
- echo "Publishing HBase checkout at '$GIT_REF' ($git_hash)"
- echo "Publish version is $HBASE_VERSION"
- # Coerce the requested version
- $MVN versions:set -DnewVersion=$HBASE_VERSION
- MAVEN_OPTS="${MAVEN_OPTS}" $MVN --settings $tmp_settings -Dmaven.repo.local=$tmp_repo \
- -DskipTests $PUBLISH_PROFILES clean install
- pushd $tmp_repo/org/apache/hbase
- # Remove any extra files generated during install
- # Do find in hbase* because thirdparty is at same level!
- find hbase* -type f | grep -v \.jar | grep -v \.pom | xargs rm
-
- # Using Nexus API documented here:
- # https://support.sonatype.com/entries/39720203-Uploading-to-a-Staging-Repository-via-REST-API
- if ! is_dry_run; then
- echo "Creating Nexus staging repository"
- repo_request="<promoteRequest><data><description>Apache HBase $HBASE_VERSION (commit $git_hash)</description></data></promoteRequest>"
- out=$(curl -X POST -d "$repo_request" -u $ASF_USERNAME:$ASF_PASSWORD \
- -H "Content-Type:application/xml" -v \
- $NEXUS_ROOT/profiles/$NEXUS_PROFILE/start)
- staged_repo_id=$(echo $out | sed -e "s/.*\(orgapachehbase-[0-9]\{4\}\).*/\1/")
- echo "Created Nexus staging repository: $staged_repo_id"
- fi
-
- # this must have .asc, and .sha1 - it really doesn't like anything else there
- for file in $(find hbase* -type f)
- do
- if [[ "$file" == *.asc ]]; then
- continue
- fi
- if [ ! -f $file.asc ]; then
- echo $GPG_PASSPHRASE | $GPG --passphrase-fd 0 --output $file.asc \
- --detach-sig --armour $file;
- fi
- if [ $(command -v md5) ]; then
- # Available on OS X; -q to keep only hash
- md5 -q $file > $file.md5
- else
- # Available on Linux; cut to keep only hash
- md5sum $file | cut -f1 -d' ' > $file.md5
- fi
- sha1sum $file | cut -f1 -d' ' > $file.sha1
- done
-
- if ! is_dry_run; then
- nexus_upload=$NEXUS_ROOT/deployByRepositoryId/$staged_repo_id
- echo "Uplading files to $nexus_upload"
- for file in $(find hbase* -type f)
- do
- # strip leading ./
- file_short=$(echo $file | sed -e "s/\.\///")
- dest_url="$nexus_upload/org/apache/hbase/$file_short"
- echo " Uploading $file to $dest_url"
- curl -u $ASF_USERNAME:$ASF_PASSWORD --upload-file $file_short $dest_url
- done
-
- echo "Closing nexus staging repository"
- repo_request="<promoteRequest><data><stagedRepositoryId>$staged_repo_id</stagedRepositoryId><description>Apache HBase $HBASE_VERSION (commit $git_hash)</description></data></promoteRequest>"
- out=$(curl -X POST -d "$repo_request" -u $ASF_USERNAME:$ASF_PASSWORD \
- -H "Content-Type:application/xml" -v \
- $NEXUS_ROOT/profiles/$NEXUS_PROFILE/finish)
- echo "Closed Nexus staging repository: $staged_repo_id"
- fi
-
- popd
- rm -rf $tmp_repo
- cd ..
- # Dump out email to send.
- eval "echo \"$(<vote.tmpl)\"" |tee vote.txt
- exit 0
-fi
-
-cd ..
-rm -rf hbase
-echo "ERROR: expects to be called with 'install', 'publish-release' or 'publish-snapshot'"
diff --git a/dev-support/create-release/release-tag.sh b/dev-support/create-release/release-tag.sh
deleted file mode 100755
index 82d9d6a..0000000
--- a/dev-support/create-release/release-tag.sh
+++ /dev/null
@@ -1,101 +0,0 @@
-#!/usr/bin/env bash
-
-#
-# 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.
-#
-
-# Tags release. Updates releasenotes and changes.
-SELF=$(cd $(dirname $0) && pwd)
-. "$SELF/release-util.sh"
-
-function exit_with_usage {
- local NAME=$(basename $0)
- cat << EOF
-usage: $NAME
-Tags an HBase release on a particular branch.
-
-Inputs are specified with the following environment variables:
-ASF_USERNAME - Apache Username
-ASF_PASSWORD - Apache Password
-GIT_NAME - Name to use with git
-GIT_EMAIL - E-mail address to use with git
-GIT_BRANCH - Git branch on which to make release
-RELEASE_VERSION - Version used in pom files for release
-RELEASE_TAG - Name of release tag
-NEXT_VERSION - Development version after release
-EOF
- exit 1
-}
-
-set -e
-set -o pipefail
-
-if [[ $@ == *"help"* ]]; then
- exit_with_usage
-fi
-
-if [[ -z "$ASF_PASSWORD" ]]; then
- echo 'The environment variable ASF_PASSWORD is not set. Enter the password.'
- echo
- stty -echo && printf "ASF password: " && read ASF_PASSWORD && printf '\n' && stty echo
-fi
-
-for env in ASF_USERNAME ASF_PASSWORD RELEASE_VERSION RELEASE_TAG NEXT_VERSION GIT_EMAIL GIT_NAME GIT_BRANCH; do
- if [ -z "${!env}" ]; then
- echo "$env must be set to run this script"
- exit 1
- fi
-done
-
-init_java
-init_mvn
-
-ASF_HBASE_REPO="gitbox.apache.org/repos/asf/hbase.git"
-
-rm -rf hbase
-git clone "https://$ASF_USERNAME:$ASF_PASSWORD@$ASF_HBASE_REPO" -b $GIT_BRANCH
-update_releasenotes `pwd`/hbase $RELEASE_VERSION
-
-cd hbase
-
-git config user.name "$GIT_NAME"
-git config user.email $GIT_EMAIL
-
-# Create release version
-$MVN versions:set -DnewVersion=$RELEASE_VERSION | grep -v "no value" # silence logs
-git add RELEASENOTES.md CHANGES.md
-
-git commit -a -m "Preparing HBase release $RELEASE_TAG; tagging and updates to CHANGES.md and RELEASENOTES.md"
-echo "Creating tag $RELEASE_TAG at the head of $GIT_BRANCH"
-git tag $RELEASE_TAG
-
-# Create next version
-$MVN versions:set -DnewVersion=$NEXT_VERSION | grep -v "no value" # silence logs
-
-git commit -a -m "Preparing development version $NEXT_VERSION"
-
-if ! is_dry_run; then
- # Push changes
- git push origin $RELEASE_TAG
- git push origin HEAD:$GIT_BRANCH
- cd ..
- rm -rf hbase
-else
- cd ..
- mv hbase hbase.tag
- echo "Clone with version changes and tag available as hbase.tag in the output directory."
-fi
-
diff --git a/dev-support/create-release/release-util.sh b/dev-support/create-release/release-util.sh
deleted file mode 100755
index fe5f2a2..0000000
--- a/dev-support/create-release/release-util.sh
+++ /dev/null
@@ -1,288 +0,0 @@
-#!/usr/bin/env bash
-
-#
-# 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.
-#
-DRY_RUN=${DRY_RUN:-0}
-GPG="gpg --pinentry-mode loopback --no-tty --batch"
-ASF_REPO="https://gitbox.apache.org/repos/asf/hbase.git"
-
-ASF_REPO_WEBUI="https://gitbox.apache.org/repos/asf?p=hbase.git"
-ASF_GITHUB_REPO="https://github.com/apache/hbase"
-YETUS_VERSION=0.9.0
-
-function error {
- echo "$*"
- exit 1
-}
-
-function read_config {
- local PROMPT="$1"
- local DEFAULT="$2"
- local REPLY=
-
- read -p "$PROMPT [$DEFAULT]: " REPLY
- local RETVAL="${REPLY:-$DEFAULT}"
- if [ -z "$RETVAL" ]; then
- error "$PROMPT is must be provided."
- fi
- echo "$RETVAL"
-}
-
-function parse_version {
- grep -e '<version>.*</version>' | \
- head -n 2 | tail -n 1 | cut -d'>' -f2 | cut -d '<' -f1
-}
-
-function run_silent {
- local BANNER="$1"
- local LOG_FILE="$2"
- shift 2
-
- echo "========================"
- echo "= $BANNER"
- echo "Command: $@"
- echo "Log file: $LOG_FILE"
-
- "$@" 1>"$LOG_FILE" 2>&1
-
- local EC=$?
- if [ $EC != 0 ]; then
- echo "Command FAILED. Check full logs for details."
- tail "$LOG_FILE"
- exit $EC
- fi
-}
-
-function fcreate_secure {
- local FPATH="$1"
- rm -f "$FPATH"
- touch "$FPATH"
- chmod 600 "$FPATH"
-}
-
-function check_for_tag {
- curl -s --head --fail "$ASF_GITHUB_REPO/releases/tag/$1" > /dev/null
-}
-
-# Get all branches that begin with 'branch-', the hbase convention for
-# release branches, sort them and then pop off the most recent.
-function get_release_info {
- if [ -z "$GIT_BRANCH" ]; then
- # If no branch is specified, find out the latest branch from the repo.
- GIT_BRANCH=$(git ls-remote --heads "$ASF_REPO" |
- grep refs/heads/branch- |
- awk '{print $2}' |
- sort -r |
- head -n 1 |
- cut -d/ -f3)
- fi
-
- export GIT_BRANCH=$(read_config "Branch" "$GIT_BRANCH")
-
- # Find the current version for the branch.
- local VERSION=$(curl -s "$ASF_REPO_WEBUI;a=blob_plain;f=pom.xml;hb=refs/heads/$GIT_BRANCH" |
- parse_version)
- echo "Current branch version is $VERSION."
-
- if [[ ! $VERSION =~ .*-SNAPSHOT ]]; then
- error "Not a SNAPSHOT version: $VERSION"
- fi
-
- NEXT_VERSION="$VERSION"
- RELEASE_VERSION="${VERSION/-SNAPSHOT/}"
- SHORT_VERSION=$(echo "$VERSION" | cut -d . -f 1-2)
- local REV=$(echo "$VERSION" | cut -d . -f 3)
-
- # Find out what RC is being prepared.
- # - If the current version is "x.y.0", then this is RC0 of the "x.y.0" release.
- # - If not, need to check whether the previous version has been already released or not.
- # - If it has, then we're building RC0 of the current version.
- # - If it has not, we're building the next RC of the previous version.
- local RC_COUNT
- if [ $REV != 0 ]; then
- local PREV_REL_REV=$((REV - 1))
- # Export this finding.
- export PREV_REL_TAG="rel/${SHORT_VERSION}.${PREV_REL_REV}"
- if check_for_tag "$PREV_REL_TAG"; then
- RC_COUNT=0
- REV=$((REV + 1))
- NEXT_VERSION="${SHORT_VERSION}.${REV}-SNAPSHOT"
- else
- RELEASE_VERSION="${SHORT_VERSION}.${PREV_REL_REV}"
- RC_COUNT=$(git ls-remote --tags "$ASF_REPO" "${RELEASE_VERSION}RC*" | wc -l)
- # This makes a 'number' of it.
- RC_COUNT=$((RC_COUNT))
- fi
- else
- REV=$((REV + 1))
- NEXT_VERSION="${SHORT_VERSION}.${REV}-SNAPSHOT"
- RC_COUNT=0
- fi
-
- export NEXT_VERSION
- export RELEASE_VERSION=$(read_config "Release" "$RELEASE_VERSION")
-
- RC_COUNT=$(read_config "RC #" "$RC_COUNT")
-
- # Check if the RC already exists, and if re-creating the RC, skip tag creation.
- RELEASE_TAG="${RELEASE_VERSION}RC${RC_COUNT}"
- SKIP_TAG=0
- if check_for_tag "$RELEASE_TAG"; then
- read -p "$RELEASE_TAG already exists. Continue anyway [y/n]? " ANSWER
- if [ "$ANSWER" != "y" ]; then
- error "Exiting."
- fi
- SKIP_TAG=1
- fi
-
-
- export RELEASE_TAG
-
- GIT_REF="$RELEASE_TAG"
- if is_dry_run; then
- echo "This is a dry run. Please confirm the ref that will be built for testing."
- GIT_REF=$(read_config "Ref" "$GIT_REF")
- fi
- export GIT_REF
- export HBASE_PACKAGE_VERSION="$RELEASE_TAG"
-
- # Gather some user information.
- export ASF_USERNAME=$(read_config "ASF user" "$LOGNAME")
-
- GIT_NAME=$(git config user.name || echo "")
- export GIT_NAME=$(read_config "Full name" "$GIT_NAME")
-
- export GIT_EMAIL="$ASF_USERNAME@apache.org"
- export GPG_KEY=$(read_config "GPG key" "$GIT_EMAIL")
-
- cat <<EOF
-================
-Release details:
-BRANCH: $GIT_BRANCH
-VERSION: $RELEASE_VERSION
-TAG: $RELEASE_TAG
-NEXT: $NEXT_VERSION
-PREVIOUS TAG: $PREV_REL_TAG
-
-ASF USER: $ASF_USERNAME
-GPG KEY: $GPG_KEY
-FULL NAME: $GIT_NAME
-E-MAIL: $GIT_EMAIL
-================
-EOF
-
- read -p "Is this info correct [y/n]? " ANSWER
- if [ "$ANSWER" != "y" ]; then
- echo "Exiting."
- exit 1
- fi
-
- if ! is_dry_run; then
- if [ -z "$ASF_PASSWORD" ]; then
- stty -echo && printf "ASF password: " && read ASF_PASSWORD && printf '\n' && stty echo
- fi
- else
- ASF_PASSWORD="***INVALID***"
- fi
-
- if [ -z "$GPG_PASSPHRASE" ]; then
- stty -echo && printf "GPG passphrase: " && read GPG_PASSPHRASE && printf '\n' && stty echo
- export GPG_TTY=$(tty)
- fi
-
- export ASF_PASSWORD
- export GPG_PASSPHRASE
-}
-
-function is_dry_run {
- [[ $DRY_RUN = 1 ]]
-}
-
-# Initializes JAVA_VERSION to the version of the JVM in use.
-function init_java {
- if [ -z "$JAVA_HOME" ]; then
- error "JAVA_HOME is not set."
- fi
- JAVA_VERSION=$("${JAVA_HOME}"/bin/javac -version 2>&1 | cut -d " " -f 2)
- echo "java version: $JAVA_VERSION"
- export JAVA_VERSION
-}
-
-function init_python {
- if ! [ -x "$(command -v python2)" ]; then
- echo 'Error: python2 needed by yetus. Install or add link? E.g: sudo ln -sf /usr/bin/python2.7 /usr/local/bin/python2' >&2
- exit 1
- fi
-}
-
-# Set MVN
-function init_mvn {
- if [ -n "$MAVEN_HOME" ]; then
- MVN=${MAVEN_HOME}/bin/mvn
- elif [ $(type -P mvn) ]; then
- MVN=mvn
- else
- error "MAVEN_HOME is not set nor is mvn on the current path."
- fi
- echo "mvn version: `$MVN --version`"
- # Add timestamped logging.
- MVN="${MVN} -B"
- export MVN
-}
-
-# Writes report into cwd!
-function generate_api_report {
- local hbase=$1
- local previous_release_tag=$2
- local release_tag=$3
- # Generate api report.
- ${hbase}/dev-support/checkcompatibility.py --annotation \
- org.apache.yetus.audience.InterfaceAudience.Public \
- $previous_release_tag $release_tag
- local previous_version=$(echo ${previous_release_tag} | sed -e 's/rel\///')
- cp ${hbase}/target/compat-check/report.html "./api_compare_${release_tag}_to_${previous_version}.html"
-}
-
-# Update the CHANGES.md
-# DOES NOT DO COMMITS! Caller should do that.
-# yetus requires python2 to be on the path.
-function update_releasenotes {
- local hbase=$1
- local release_version=$2
- local yetus="apache-yetus-${YETUS_VERSION}"
- wget -qO- "https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename=/yetus/${YETUS_VERSION}/${yetus}-bin.tar.gz" | \
- tar xvz -C .
- cd ./${yetus}
- ./bin/releasedocmaker -p HBASE --fileversions -v ${release_version} -l --sortorder=newer --skip-credits
- # First clear out the changes written by previous RCs.
- sed -i -e "/^## Release ${release_version}/,/^## Release/ {//!d; /^## Release ${release_version}/d;}" \
- ${hbase}/CHANGES.md
- sed -i -e "/^# HBASE ${release_version} Release Notes/,/^# HBASE/{//!d; /^# HBASE ${release_version} Release Notes/d;}" \
- ${hbase}/RELEASENOTES.md
-
- # The above generates RELEASENOTES.X.X.X.md and CHANGELOG.X.X.X.md.
- # To insert into hbase CHANGES.me...need to cut the top off the
- # CHANGELOG.X.X.X.md file removing license and first line and then
- # insert it after the license comment closing where we have a
- # DO NOT REMOVE marker text!
- sed -i -e '/## Release/,$!d' CHANGELOG.${release_version}.md
- sed -i -e "/DO NOT REMOVE/r CHANGELOG.${release_version}.md" ${hbase}/CHANGES.md
- # Similar for RELEASENOTES but slightly different.
- sed -i -e '/Release Notes/,$!d' RELEASENOTES.${release_version}.md
- sed -i -e "/DO NOT REMOVE/r RELEASENOTES.${release_version}.md" ${hbase}/RELEASENOTES.md
- cd ..
-}
diff --git a/dev-support/create-release/vote.tmpl b/dev-support/create-release/vote.tmpl
deleted file mode 100644
index dfa8176..0000000
--- a/dev-support/create-release/vote.tmpl
+++ /dev/null
@@ -1,33 +0,0 @@
-Please vote on this release candidate (RC) for Apache HBase ${RELEASE_VERSION}.
-
-The VOTE will remain open for at least 72 hours.
-
-[ ] +1 Release this package as Apache HBase ${RELEASE_VERSION}
-[ ] -1 Do not release this package because ...
-
-The tag to be voted on is ${RELEASE_TAG}:
-
- https://github.com/apache/hbase/tree/${RELEASE_TAG}
-
-The release files, including signatures, digests, etc. can be found at:
-
- https://dist.apache.org/repos/dist/dev/hbase/${RELEASE_TAG}/
-
-Maven artifacts are available in a staging repository at:
-
- https://repository.apache.org/content/repositories/orgapachehbase-${staged_repo_id}/
-
-Artifacts were signed with the ${GPG_KEY} key which can be found in:
-
- https://dist.apache.org/repos/dist/release/hbase/KEYS
-
-The list of bug fixes going into {version} can be found in included
-CHANGES.md and RELEASENOTES.md available here:
-
- https://dist.apache.org/repos/dist/dev/hbase/${RELEASE_VERSION}/CHANGES.md
- https://dist.apache.org/repos/dist/dev/hbase/${RELEASE_VERSION}/RELEASENOTES.md
-
-To learn more about Apache HBase, please see http://hbase.apache.org/
-
-Thanks,
-Your HBase Release Manager