bahir-reviews mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From tzulitai <...@git.apache.org>
Subject [GitHub] bahir-flink pull request #14: [BAHIR-96] Add release util scripts for Bahir ...
Date Mon, 27 Mar 2017 03:13:09 GMT
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.
---

Mime
View raw message