#!/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 -e # Set this building other hbase repos: e.g. PROJECT=hbase-operator-tools export PROJECT="${PROJECT:-hbase}" SELF=$(cd $(dirname "$0") && pwd) . "$SELF/release-util.sh" function usage { local NAME NAME="$(basename "$0")" cat < "$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" <> "$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"