From c6f268126a5128ed8d9d97c004e6795f3b471f51 Mon Sep 17 00:00:00 2001 From: Josh Elser Date: Mon, 19 Mar 2018 15:52:53 -0400 Subject: [PATCH] HBASE-19560 Add a make_rc.sh Trim down core HBase's make_rc.sh for 3rdparty's use --- dev_files/make_rc.sh | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100755 dev_files/make_rc.sh diff --git a/dev_files/make_rc.sh b/dev_files/make_rc.sh new file mode 100755 index 0000000..108a5c0 --- /dev/null +++ b/dev_files/make_rc.sh @@ -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 people.apache.org 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" +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" -- 2.16.2