HBASE-19560 Add a make_rc.sh
authorJosh Elser <elserj@apache.org>
Mon, 19 Mar 2018 19:52:53 +0000 (15:52 -0400)
committerJosh Elser <elserj@apache.org>
Mon, 19 Mar 2018 22:49:18 +0000 (18:49 -0400)
Trim down core HBase's make_rc.sh for 3rdparty's use

Signed-off-by: Mike Drob <mdrob@apache.org>
dev_files/make_rc.sh [new file with mode: 0755]

diff --git a/dev_files/make_rc.sh b/dev_files/make_rc.sh
new file mode 100755 (executable)
index 0000000..e56c2d5
--- /dev/null
@@ -0,0 +1,84 @@
+#!/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.
+
+# Script that assembles all you need to make an RC. Does build of the tar.gzs
+# which it stashes into a dir above $(pwd) named for the script with a
+# timestamp suffix. Deploys builds to maven.
+#
+# To finish, check what was build.  If good, copy to dist.apache.org/dev and
+# close the maven repos.  Call a vote.
+#
+# Presumes your settings.xml all set up so can sign artifacts published to mvn, etc.
+
+set -e
+
+# Script checks out a tag, cleans the checkout and then builds src and bin
+# tarballs. It then deploys to the apache maven repository.
+# Presumes run from git dir.
+
+# Need a git tag to build.
+if [ "$1" = "" ]
+then
+  echo -n "Usage: $0 TAG_TO_PACKAGE"
+  exit 1
+fi
+git_tag=$1
+
+# Set mvn
+mvn=mvn
+if [ "$MAVEN" != "" ]; then
+  mvn="${MAVEN}"
+fi
+
+# Ensure we are inside a git repo before making progress
+# The below will fail if outside git.
+git -C . rev-parse
+
+# Checkout git_tag
+git checkout "${git_tag}"
+
+# Get mvn project version
+#shellcheck disable=SC2016
+version=$(${mvn} -q -N -Dexec.executable="echo" -Dexec.args='${project.version}' exec:exec)
+hbase_name="hbase-thirdparty-${version}"
+
+# Make a dir to save tgzs into.
+d=`date -u +"%Y%m%dT%H%M%SZ"`
+output_dir="${TMPDIR}/$hbase_name.$d"
+mkdir -p "${output_dir}"
+
+# Make sure all clean.
+git clean -f -x -d
+${mvn} clean
+
+# Run a rat check.
+${mvn} apache-rat:check
+
+# Build src.
+git archive --format=tar.gz --output="${output_dir}/${hbase_name}-src.tar.gz" --prefix="${hbase_name}/" "${git_tag}"
+
+# Deploy to mvn repository
+${mvn} clean deploy -Papache-release -Prelease
+
+# Do sha512
+cd ${output_dir}
+for i in *.tar.gz; do echo $i; gpg --print-md SHA512 $i > $i.sha512 ; done
+
+echo "Check the content of ${output_dir}.  If good, sign and push to dist.apache.org/dev"
+echo "  e.g. gpg --armor --output ${hbase_name}-src.tar.gz.asc --detach-sig ${hbase_name}-src.tar.gz "
+echo "Also, check the content deployed to maven.  If good, close the repo and record links of temporary staging repo"