| #!/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" |