Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id DD2C5200C52 for ; Mon, 27 Mar 2017 05:13:11 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id D1586160B92; Mon, 27 Mar 2017 03:13:11 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id EE9B2160B87 for ; Mon, 27 Mar 2017 05:13:10 +0200 (CEST) Received: (qmail 79377 invoked by uid 500); 27 Mar 2017 03:13:10 -0000 Mailing-List: contact reviews-help@bahir.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: reviews@bahir.apache.org Delivered-To: mailing list reviews@bahir.apache.org Received: (qmail 79366 invoked by uid 99); 27 Mar 2017 03:13:09 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 27 Mar 2017 03:13:09 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 6CD3FDFE1E; Mon, 27 Mar 2017 03:13:09 +0000 (UTC) From: tzulitai To: reviews@bahir.apache.org Reply-To: reviews@bahir.apache.org References: In-Reply-To: Subject: [GitHub] bahir-flink pull request #14: [BAHIR-96] Add release util scripts for Bahir ... Content-Type: text/plain Message-Id: <20170327031309.6CD3FDFE1E@git1-us-west.apache.org> Date: Mon, 27 Mar 2017 03:13:09 +0000 (UTC) archived-at: Mon, 27 Mar 2017 03:13:12 -0000 Github user tzulitai commented on a diff in the pull request: https://github.com/apache/bahir-flink/pull/14#discussion_r108085115 --- Diff: dev/release-build.sh --- @@ -0,0 +1,330 @@ +#!/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. +# + +function exit_with_usage { + cat << EOF + +release-build - Creates build distributions from a git commit hash or from HEAD. + +SYNOPSIS + +usage: release-build.sh [--release-prepare | --release-publish | --release-snapshot] + +DESCRIPTION + +Use maven infrastructure to create a project release package and publish +to staging release location (https://dist.apache.org/repos/dist/dev/bahir-flink) +and maven staging release repository. + +--release-prepare --releaseVersion="1.0" --developmentVersion="1.1-SNAPSHOT" [--releaseRc="rc1"] [--tag="v1.0"] [--gitCommitHash="a874b73"] +This form execute maven release:prepare and upload the release candidate distribution +to the staging release location. + +--release-publish --gitCommitHash="a874b73" +Publish the maven artifacts of a release to the Apache staging maven repository. +Note that this will publish both Scala 2.10 and 2.11 artifacts. + +--release-snapshot [--gitCommitHash="a874b73"] +Publish the maven snapshot artifacts to Apache snapshots maven repository +Note that this will publish both Scala 2.10 and 2.11 artifacts. + +OPTIONS + +--releaseVersion - Release identifier used when publishing +--developmentVersion - Release identifier used for next development cycle +--releaseRc - Release RC identifier used when publishing, default 'rc1' +--tag - Release Tag identifier used when taging the release, default 'v$releaseVersion' +--gitCommitHash - Release tag or commit to build from, default master HEAD +--dryRun - Dry run only, mostly used for testing. + +A GPG passphrase is expected as an environment variable + +GPG_PASSPHRASE - Passphrase for GPG key used to sign release + +EXAMPLES + +release-build.sh --release-prepare --releaseVersion="1.0" --developmentVersion="1.1-SNAPSHOT" +release-build.sh --release-prepare --releaseVersion="1.0" --developmentVersion="1.1-SNAPSHOT" --releaseRc="rc1" --tag="v1.0" +release-build.sh --release-prepare --releaseVersion="1.0" --developmentVersion="1.1-SNAPSHOT" --releaseRc="rc1" --tag="v1.0" --gitCommitHash="a874b73" --dryRun + +release-build.sh --release-publish --gitCommitHash="a874b73" +release-build.sh --release-publish --gitTag="v1.0rc1" + +release-build.sh --release-snapshot +release-build.sh --release-snapshot --gitCommitHash="a874b73" + +EOF + exit 1 +} + +set -e + +if [ $# -eq 0 ]; then + exit_with_usage +fi + + +# Process each provided argument configuration +while [ "${1+defined}" ]; do + IFS="=" read -ra PARTS <<< "$1" + case "${PARTS[0]}" in + --release-prepare) + GOAL="release-prepare" + RELEASE_PREPARE=true + shift + ;; + --release-publish) + GOAL="release-publish" + RELEASE_PUBLISH=true + shift + ;; + --release-snapshot) + GOAL="release-snapshot" + RELEASE_SNAPSHOT=true + shift + ;; + --gitCommitHash) + GIT_REF="${PARTS[1]}" + shift + ;; + --gitTag) + GIT_TAG="${PARTS[1]}" + shift + ;; + --releaseVersion) + RELEASE_VERSION="${PARTS[1]}" + shift + ;; + --developmentVersion) + DEVELOPMENT_VERSION="${PARTS[1]}" + shift + ;; + --releaseRc) + RELEASE_RC="${PARTS[1]}" + shift + ;; + --tag) + RELEASE_TAG="${PARTS[1]}" + shift + ;; + --dryRun) + DRY_RUN="-DdryRun=true" + shift + ;; + + *help* | -h) + exit_with_usage + exit 0 + ;; + -*) + echo "Error: Unknown option: $1" >&2 + exit 1 + ;; + *) # No more options + break + ;; + esac +done + + +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 + fi + +if [[ "$RELEASE_PREPARE" == "true" && -z "$RELEASE_VERSION" ]]; then + echo "ERROR: --releaseVersion must be passed as an argument to run this script" + exit_with_usage +fi + +if [[ "$RELEASE_PREPARE" == "true" && -z "$DEVELOPMENT_VERSION" ]]; then + echo "ERROR: --developmentVersion must be passed as an argument to run this script" + exit_with_usage +fi + +if [[ "$RELEASE_PUBLISH" == "true" ]]; then + if [[ "$GIT_REF" && "$GIT_TAG" ]]; then + echo "ERROR: Only one argumented permitted when publishing : --gitCommitHash or --gitTag" + exit_with_usage + fi + if [[ -z "$GIT_REF" && -z "$GIT_TAG" ]]; then + echo "ERROR: --gitCommitHash OR --gitTag must be passed as an argument to run this script" + exit_with_usage + fi +fi + +if [[ "$RELEASE_PUBLISH" == "true" && "$DRY_RUN" ]]; then + echo "ERROR: --dryRun not supported for --release-publish" + exit_with_usage +fi + +if [[ "$RELEASE_SNAPSHOT" == "true" && "$DRY_RUN" ]]; then + echo "ERROR: --dryRun not supported for --release-publish" + exit_with_usage +fi + +# Commit ref to checkout when building +GIT_REF=${GIT_REF:-master} +if [[ "$RELEASE_PUBLISH" == "true" && "$GIT_TAG" ]]; then + GIT_REF="tags/$GIT_TAG" +fi + +BASE_DIR=$(pwd) + +MVN="mvn" +PUBLISH_PROFILES="-Pdistribution" + +if [ -z "$RELEASE_RC" ]; then + RELEASE_RC="rc1" +fi + +if [ -z "$RELEASE_TAG" ]; then + RELEASE_TAG="v$RELEASE_VERSION-$RELEASE_RC" +fi + +RELEASE_STAGING_LOCATION="https://dist.apache.org/repos/dist/dev/bahir-flink/" + + +echo " " +echo "-------------------------------------------------------------" +echo "------- Release preparation with the following parameters ---" +echo "-------------------------------------------------------------" +echo "Executing ==> $GOAL" +echo "Git reference ==> $GIT_REF" +echo "release version ==> $RELEASE_VERSION" +echo "development version ==> $DEVELOPMENT_VERSION" +echo "rc ==> $RELEASE_RC" +echo "tag ==> $RELEASE_TAG" +if [ "$DRY_RUN" ]; then + echo "dry run ? ==> true" +fi +echo " " +echo "Deploying to :" +echo $RELEASE_STAGING_LOCATION +echo " " + +function checkout_code { + # Checkout code + rm -rf target + mkdir target + cd target + rm -rf bahir-flink + git clone https://git-wip-us.apache.org/repos/asf/bahir-flink.git + cd bahir-flink + git checkout $GIT_REF + git_hash=`git rev-parse --short HEAD` + echo "Checked out Bahir Flink git hash $git_hash" + + git clean -d -f -x + #rm .gitignore + #rm -rf .git + + cd "$BASE_DIR" #return to base dir +} + +if [[ "$RELEASE_PREPARE" == "true" ]]; then + echo "Preparing release $RELEASE_VERSION" + # Checkout code + checkout_code + cd target/bahir-flink + + # Build and prepare the release + $MVN $PUBLISH_PROFILES release:clean release:prepare $DRY_RUN -Darguments="-Dgpg.passphrase=\"$GPG_PASSPHRASE\" -DskipTests" -DreleaseVersion="$RELEASE_VERSION" -DdevelopmentVersion="$DEVELOPMENT_VERSION" -Dtag="$RELEASE_TAG" + + cd .. #exit bahir-flink + + if [ -z "$DRY_RUN" ]; then + svn co $RELEASE_STAGING_LOCATION svn-bahir-flink + mkdir -p svn-bahir-flink/$RELEASE_VERSION-$RELEASE_RC + cp bahir-flink/distribution/target/*.tar.gz svn-bahir-flink/$RELEASE_VERSION-$RELEASE_RC/ + cp bahir-flink/distribution/target/*.zip svn-bahir-flink/$RELEASE_VERSION-$RELEASE_RC/ + + cd svn-bahir-flink/$RELEASE_VERSION-$RELEASE_RC/ + for i in *.zip *.gz; do gpg --output $i.asc --detach-sig --armor $i; done + for i in *.zip *.gz; do openssl md5 -hex $i | sed 's/MD5(\([^)]*\))= \([0-9a-f]*\)/\2 *\1/' > $i.md5; done + + cd .. #exit $RELEASE_VERSION-$RELEASE_RC/ + + svn add $RELEASE_VERSION-$RELEASE_RC/ + svn ci -m"Apache Bahir Flink Extensions $RELEASE_VERSION-$RELEASE_RC" --- End diff -- That sounds better, will change this! --- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastructure@apache.org or file a JIRA ticket with INFRA. ---