This is an automated email from the ASF dual-hosted git repository. onichols pushed a commit to branch support/1.14 in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/support/1.14 by this push: new ebb41f2 remove outdated copies of release scripts to ensure they are not run by accident ebb41f2 is described below commit ebb41f242373012cb018a49a16ed8df156fc467d Author: Owen Nichols <onich...@apache.org> AuthorDate: Thu Feb 11 16:49:46 2021 -0800 remove outdated copies of release scripts to ensure they are not run by accident --- dev-tools/release/README.md | 31 +- dev-tools/release/commit_rc.sh | 146 ------- dev-tools/release/create_support_branches.sh | 270 ------------ dev-tools/release/deploy_rc_pipeline.sh | 622 --------------------------- dev-tools/release/end_of_support.sh | 155 ------- dev-tools/release/license_review.sh | 362 ---------------- dev-tools/release/prepare_rc.sh | 347 --------------- dev-tools/release/print_rc_email.sh | 101 ----- dev-tools/release/promote_rc.sh | 507 ---------------------- dev-tools/release/set_copyright.sh | 57 --- dev-tools/release/set_versions.sh | 176 -------- 11 files changed, 1 insertion(+), 2773 deletions(-) diff --git a/dev-tools/release/README.md b/dev-tools/release/README.md index 493ce10..4bc08cd 100644 --- a/dev-tools/release/README.md +++ b/dev-tools/release/README.md @@ -1,30 +1 @@ -# geode/dev-tools/release -This directory contains scripts to help create a release of Geode and manage branches. - -Not all release steps have scripts. Please follow all instructions as documented in the wiki: [Releasing Apache Geode](https://cwiki.apache.org/confluence/display/GEODE/Releasing+Apache+Geode). - -These scripts are intended to be run from the parent directory of your geode develop checkout, e.g.: - - $ cd .. - $ geode/dev-tools/release/foo.sh - -## Overview of scripts - -**license\_review.sh** compares versions with a previous release and/or checks that all bundled dependencies are noted in appropriate LICENSE file - -**create\_support\_branches.sh** cuts support/x.y from develop for all projects and walks you through creating pipelines and setting version numbers - -**set\_copyright.sh** updates the copyright year - -**set\_versions.sh** updates files that need to contain the version number planned for the next release from this support branch - -**prepare\_rc.sh** Checks out the various geode repos, builds a release candidate, and publishes to nexus staging repo - -**commit\_rc.sh** Pushes the tags and artifacts staged by prepare\_rc.sh and then runs print\_rc\_email.sh - -**print\_rc\_email.sh** Generates an email to send to the dev list announcing a release candidate - -**promote\_rc.sh** Tags an RC as the final release, builds docker images, merges to master, and starts the mirroring and brew processes - -**end\_of\_support.sh** cleans up pipelines and branches after 9-month life of support branch is reached - +See [Releasing Apache Geode](https://cwiki.apache.org/confluence/display/GEODE/Releasing+Apache+Geode) diff --git a/dev-tools/release/commit_rc.sh b/dev-tools/release/commit_rc.sh deleted file mode 100755 index 7331a12..0000000 --- a/dev-tools/release/commit_rc.sh +++ /dev/null @@ -1,146 +0,0 @@ -#!/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. - -set -e - -usage() { - echo "Usage: print_rc_email.sh -v version_number -m maven_repo_id" - echo " -v The #.#.#.RC# version number" - echo " -m The 4 digit id of the nexus maven repo" - exit 1 -} - -FULL_VERSION="" -MAVEN="" - -while getopts ":v:m:" opt; do - case ${opt} in - v ) - FULL_VERSION=$OPTARG - ;; - m ) - MAVEN=$OPTARG - ;; - \? ) - usage - ;; - esac -done - -if [[ ${FULL_VERSION} == "" ]] || [[ ${MAVEN} == "" ]]; then - usage -fi - -if [[ $FULL_VERSION =~ ^([0-9]+\.[0-9]+\.[0-9]+)\.(RC[0-9]+)$ ]]; then - VERSION=${BASH_REMATCH[1]} -else - echo "Malformed version number ${FULL_VERSION}. Example valid version: 1.9.0.RC1" - exit 1 -fi - -VERSION_MM=${VERSION%.*} - -set -x -WORKSPACE=$PWD/release-${VERSION}-workspace -GEODE=$WORKSPACE/geode -GEODE_EXAMPLES=$WORKSPACE/geode-examples -GEODE_NATIVE=$WORKSPACE/geode-native -GEODE_BENCHMARKS=$WORKSPACE/geode-benchmarks -SVN_DIR=$WORKSPACE/dist/dev/geode -set +x - -if [ -d "$GEODE" ] && [ -d "$GEODE_EXAMPLES" ] && [ -d "$GEODE_NATIVE" ] && [ -d "$GEODE_BENCHMARKS" ] && [ -d "$SVN_DIR" ] ; then - true -else - echo "Please run this script from the same working directory as you initially ran prepare_rc.sh" - exit 1 -fi - - -function failMsg { - errln=$1 - echo "ERROR: script did NOT complete successfully" - echo "Comment out any steps that already succeeded (approximately lines 80-$(( errln - 1 ))) and try again" -} -trap 'failMsg $LINENO' ERR - - -echo "" -echo "============================================================" -echo "Publishing artifacts to apache release location..." -echo "============================================================" -set -x -cd ${SVN_DIR} -svn commit -m "Releasing Apache Geode ${FULL_VERSION} distribution" -set +x - - -echo "" -echo "============================================================" -echo "Adding temporary commit for geode-examples to build against staged ${FULL_VERSION}..." -echo "============================================================" -set -x -cd ${GEODE_EXAMPLES} -set +x -sed -e 's#^geodeRepositoryUrl *=.*#geodeRepositoryUrl = https://repository.apache.org/content/repositories/orgapachegeode-'"${MAVEN}#" \ - -e 's#^geodeReleaseUrl *=.*#geodeReleaseUrl = https://dist.apache.org/repos/dist/dev/geode/'"${FULL_VERSION}#" -i.bak gradle.properties -rm gradle.properties.bak -set -x -git add gradle.properties -git diff --staged --color | cat -git commit -m "temporarily point to staging repo for CI purposes" -git push -set +x - - -echo "" -echo "============================================================" -echo "Keeping -build.0 suffix" -echo "============================================================" -cd ${GEODE}/../.. -set -x -${0%/*}/set_versions.sh -v ${VERSION} -s -n -w "${WORKSPACE}" -set +x - - -echo "" -echo "============================================================" -echo "Pushing copyrights, versions, and tags..." -echo "============================================================" -for DIR in ${GEODE} ${GEODE_EXAMPLES} ${GEODE_NATIVE} ${GEODE_BENCHMARKS} ; do - set -x - cd ${DIR} - git pull -r - git push -u origin - git push origin rel/v${FULL_VERSION} - set +x -done - - -echo "" -echo "============================================================" -echo "Done publishing the release candidate! Next steps:" -echo "============================================================" -cd ${GEODE}/../.. -echo "1. ${0%/*}/deploy_rc_pipeline.sh -v ${VERSION_MM}" -echo "2. Monitor https://concourse.apachegeode-ci.info/teams/main/pipelines/apache-support-${VERSION_MM//./-}-rc until all green" -echo "3. Send the following email to announce the RC:" -echo "To: d...@geode.apache.org" -echo "Subject: [VOTE] Apache Geode ${FULL_VERSION}" -${0%/*}/print_rc_email.sh -v ${FULL_VERSION} -m ${MAVEN} -echo "" -which pbcopy >/dev/null && ${0%/*}/print_rc_email.sh -v ${FULL_VERSION} -m ${MAVEN} | pbcopy && echo "(copied to clipboard)" diff --git a/dev-tools/release/create_support_branches.sh b/dev-tools/release/create_support_branches.sh deleted file mode 100755 index d74c7eb..0000000 --- a/dev-tools/release/create_support_branches.sh +++ /dev/null @@ -1,270 +0,0 @@ -#!/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. - -set -e - -usage() { - echo "Usage: create_support_branches.sh -v version_number -g your_github_username" - echo " -v The #.# version number of the support branch to create" - echo " -g Your github username" - exit 1 -} - -VERSION_MM="" -GITHUB_USER="" - -while getopts ":v:g:" opt; do - case ${opt} in - v ) - VERSION_MM=$OPTARG - ;; - g ) - GITHUB_USER=$OPTARG - ;; - \? ) - usage - ;; - esac -done - -if [[ ${VERSION_MM} == "" ]] || [[ ${GITHUB_USER} == "" ]] ; then - usage -fi - -if [[ $VERSION_MM =~ ^([0-9]+\.[0-9]+)$ ]]; then - true -else - echo "Malformed version number ${VERSION_MM}. Example valid version: 1.9" - exit 1 -fi - -MAJOR=${VERSION_MM%.*} -MINOR=${VERSION_MM#*.} - -#tip: hardcode NEWMAJOR and NEWMINOR as needed if jumping to a new major -NEWMAJOR=${MAJOR} -NEWMINOR=$((MINOR + 1)) - -NEWVERSION_MM=${NEWMAJOR}.${NEWMINOR} -NEWVERSION_MM_NODOT=${NEWVERSION_MM//./} -NEWVERSION=${NEWVERSION_MM}.0 - -set -x -WORKSPACE=$PWD/support-${VERSION_MM}-workspace -GEODE=$WORKSPACE/geode -GEODE_DEVELOP=$WORKSPACE/geode-develop -GEODE_EXAMPLES=$WORKSPACE/geode-examples -GEODE_EXAMPLES_DEVELOP=$WORKSPACE/geode-examples-develop -GEODE_NATIVE=$WORKSPACE/geode-native -GEODE_BENCHMARKS=$WORKSPACE/geode-benchmarks -set +x - - -function failMsg1 { - echo "ERROR: script did NOT complete successfully. Please try again." -} -trap failMsg1 ERR - - -echo "" -echo "============================================================" -echo "Cleaning workspace directory..." -echo "============================================================" -set -x -rm -rf $WORKSPACE -mkdir -p $WORKSPACE -cd $WORKSPACE -set +x - - -echo "" -echo "============================================================" -echo "Cloning repositories..." -echo "============================================================" -set -x -git clone --single-branch --branch develop g...@github.com:apache/geode.git -git clone --single-branch --branch develop g...@github.com:apache/geode.git geode-develop -git clone --single-branch --branch develop g...@github.com:apache/geode-examples.git -git clone --single-branch --branch develop g...@github.com:apache/geode-examples.git geode-examples-develop -git clone --single-branch --branch develop g...@github.com:apache/geode-native.git -git clone --single-branch --branch develop g...@github.com:apache/geode-benchmarks.git -set +x - - -function failMsg2 { - errln=$1 - echo "ERROR: script did NOT complete successfully" - echo "Comment out any steps that already succeeded (approximately lines 70-$(( errln - 1 ))) and try again" -} -trap 'failMsg2 $LINENO' ERR - - -cd ${GEODE}/../.. -set -x -${0%/*}/set_copyright.sh ${GEODE} ${GEODE_DEVELOP} ${GEODE_EXAMPLES} ${GEODE_EXAMPLES_DEVELOP} ${GEODE_NATIVE} ${GEODE_BENCHMARKS} -set +x - - -echo "" -echo "============================================================" -echo "Pushing copyright updates (if any) to develop before branching" -echo "============================================================" -#get these 2 done before the branch so we don't have to do develop and support separately. -#the other 2 will be pushed to develop and support versions when version bumps are pushed. -for DIR in ${GEODE_NATIVE} ${GEODE_BENCHMARKS} ; do - set -x - cd ${DIR} - if ! [ git push --dry-run 2>&1 | grep -q 'Everything up-to-date' ] ; then - git push -u origin - fi - set +x -done - - -echo "" -echo "============================================================" -echo "Creating support/${VERSION_MM} branches" -echo "============================================================" -for DIR in ${GEODE} ${GEODE_EXAMPLES} ${GEODE_NATIVE} ${GEODE_BENCHMARKS} ; do - set -x - cd ${DIR} - git checkout -b support/${VERSION_MM} - git push -u origin support/${VERSION_MM} - set +x -done - - -echo "" -echo "============================================================" -echo "Bumping version on develop to ${NEWVERSION}" -echo "============================================================" -set -x -cd ${GEODE_DEVELOP} -git pull -r -git remote add myfork g...@github.com:${GITHUB_USER}/geode.git || true -git checkout -b roll-develop-to-${NEWVERSION} -set +x - -#version = 1.13.0-build.0 -sed -e "s/^version =.*/version = ${NEWVERSION}-build.0/" -i.bak gradle.properties - -# initial_version: 1.13.0-((stuff)).0 -sed -e "s/^ initial_version:[^-]*\(-[^.0-9]*\)[.0-9]*/ initial_version: ${NEWVERSION}\1.0/" -i.bak ./ci/pipelines/shared/jinja.variables.yml - -VER=geode-serialization/src/main/java/org/apache/geode/internal/serialization/KnownVersion.java -[ -r $VER ] || VER=geode-serialization/src/main/java/org/apache/geode/internal/serialization/Version.java -#add the new ordinal and Version constants and set them as current&highest -CURORD=$(cat $VER | awk '/private static final short GEODE_.*_ORDINAL/{print $NF}' | tr -d ';' | sort -n | tail -1) -NEWORD=$(( CURORD + 5 )) -sed -e "s#/. NOTE: when adding a new version#private static final short GEODE_${NEWMAJOR}_${NEWMINOR}_0_ORDINAL = ${NEWORD};\\ -\\ - @Immutable\\ - public static final Version GEODE_${NEWMAJOR}_${NEWMINOR}_0 =\\ - new Version("'"'"GEODE"'"'", "'"'"${NEWMAJOR}.${NEWMINOR}.0"'"'", (byte) ${NEWMAJOR}, (byte) ${NEWMINOR}, (byte) 0, (byte) 0, GEODE_${NEWMAJOR}_${NEWMINOR}_0_ORDINAL);\\ -\\ - /* NOTE: when adding a new version#" \ - -e "/public static final Version CURRENT/s#GEODE[0-9_]*#GEODE_${NEWMAJOR}_${NEWMINOR}_0#" \ - -e "/public static final int HIGHEST_VERSION/s# = [0-9]*# = ${NEWORD}#" \ - -i.bak $VER - -COM=geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/CommandInitializer.java -#add to list of all commands -sed -e "s#return Collections.unmodifiableMap(allCommands#allCommands.put(Version.GEODE_${NEWMAJOR}_${NEWMINOR}_0, geode18Commands);\\ - return Collections.unmodifiableMap(allCommands#" \ - -i.bak $COM - -# directory: docs/guide/113 -# product_version: '1.13.2' -# product_version_nodot: '113' -# product_version_geode: '1.13' -sed -E \ - -e "s#docs/guide/[0-9]+#docs/guide/${NEWVERSION_MM_NODOT}#" \ - -e "s#product_version: '[0-9.]+'#product_version: '${NEWVERSION}'#" \ - -e "s#version_nodot: '[0-9]+'#version_nodot: '${NEWVERSION_MM_NODOT}'#" \ - -e "s#product_version_geode: '[0-9.]+'#product_version_geode: '${NEWVERSION_MM}'#" \ - -i.bak geode-book/config.yml - -#rewrite '/', '/docs/guide/113/about_geode.html' -#rewrite '/index.html', '/docs/guide/113/about_geode.html' -sed -E -e "s#docs/guide/[0-9]+#docs/guide/${NEWVERSION_MM_NODOT}#" -i.bak geode-book/redirects.rb - -rm gradle.properties.bak ci/pipelines/shared/jinja.variables.yml.bak geode-book/config.yml.bak geode-book/redirects.rb.bak $VER.bak* $COM.bak* -set -x -git add . -git diff --staged --color | cat - -./gradlew updateExpectedPom - -git commit -a -m "roll develop to ${NEWVERSION} now that support/${VERSION_MM} has been created" -git push -u myfork -set +x - - -echo "" -echo "============================================================" -echo "Bumping examples version on develop to ${NEWVERSION}" -echo "============================================================" -set -x -cd ${GEODE_EXAMPLES_DEVELOP} -git pull -r -set +x - -#version = 1.13.0-build.0 -#geodeVersion = 1.13.0-build+ -sed \ - -e "s/^version =.*/version = ${NEWVERSION}-build.0/" \ - -e "s/^geodeVersion =.*/geodeVersion = ${NEWVERSION_MM}.+/" \ - -i.bak gradle.properties -rm gradle.properties.bak -set -x -git add gradle.properties -git diff --staged --color | cat -git commit -m "pair develop examples with ${NEWVERSION} now that support/${VERSION_MM} has been created" -git push -u origin -set +x - - -echo "" -echo "============================================================" -echo "Setting version on support/${VERSION_MM}" -echo "============================================================" -cd ${GEODE}/../.. -set -x -${0%/*}/set_versions.sh -v ${VERSION_MM}.0 -s -w "${WORKSPACE}" -set +x - - -echo "" -echo "============================================================" -echo "Logging you in to concourse" -echo "============================================================" -set -x -fly -t concourse.apachegeode-ci.info-main login --team-name main --concourse-url https://concourse.apachegeode-ci.info/ -set +x - - -echo "" -echo "============================================================" -echo "Done creating support branches" -echo "============================================================" -cd ${GEODE}/../.. -echo "Next steps:" -echo "1. Go to https://github.com/${GITHUB_USER}/geode/pull/new/roll-develop-to-${NEWVERSION} and create the pull request" -echo "2. Plus the BumpMinor job at https://concourse.apachegeode-ci.info/teams/main/pipelines/apache-develop-main?group=Semver%20Management" -echo "3. Add ${NEWVERSION} to Jira at https://issues.apache.org/jira/projects/GEODE?selectedItem=com.atlassian.jira.jira-projects-plugin:release-page" -echo "4. (cd ${GEODE}/ci/pipelines/meta && ./deploy_meta.sh) #takes about 2 hours. keep re-running until successful." -echo "5. That's it for now. Once all needed fixes have been proposed and cherry-picked to support/${VERSION_MM} and https://concourse.apachegeode-ci.info/teams/main/pipelines/apache-support-${VERSION_MM/./-}-main is green, come back and run ${0%/*}/prepare_rc.sh -v ${VERSION}.RC1" diff --git a/dev-tools/release/deploy_rc_pipeline.sh b/dev-tools/release/deploy_rc_pipeline.sh deleted file mode 100755 index 2335a71..0000000 --- a/dev-tools/release/deploy_rc_pipeline.sh +++ /dev/null @@ -1,622 +0,0 @@ -#!/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. - -set -e - -usage() { - echo "Usage: deploy_rc_pipeline -v version_number" - echo " -v The #.# version number" - exit 1 -} - -VERSION_MM="" - -while getopts ":v:" opt; do - case ${opt} in - v ) - VERSION_MM=$OPTARG - ;; - \? ) - usage - ;; - esac -done - -if [[ ${VERSION_MM} == "" ]]; then - usage -fi - -if [[ $VERSION_MM =~ ^([0-9]+\.[0-9]+)$ ]]; then - true -else - echo "Malformed version number ${VERSION_MM}. Example valid version: 1.9" - exit 1 -fi - -PIPEYML=$PWD/rc-pipeline.yml -cat << "EOF" | sed -e "s/<VERSION_MM>/${VERSION_MM}/" > $PIPEYML ---- - -resources: -- name: geode - type: git - source: - branch: support/<VERSION_MM> - tag_filter: rel/v<VERSION_MM>.*.RC* - uri: https://github.com/apache/geode.git -- name: geode-develop - type: git - source: - branch: develop - uri: https://github.com/apache/geode.git -- name: geode-examples - type: git - source: - branch: support/<VERSION_MM> - uri: https://github.com/apache/geode-examples.git -- name: geode-native - type: git - source: - branch: support/<VERSION_MM> - tag_filter: rel/v<VERSION_MM>.*.RC* - uri: https://github.com/apache/geode-native.git -- name: geode-benchmarks - type: git - source: - branch: support/<VERSION_MM> - tag_filter: rel/v<VERSION_MM>.*.RC* - uri: https://github.com/apache/geode-benchmarks.git -- name: upthewaterspout-tests - type: git - source: - branch: master - uri: https://github.com/apache/geode.git - -jobs: - - name: build-geode-from-tag - serial: true - public: true - plan: - - aggregate: - - get: geode - trigger: true - - task: validate - timeout: 1h - config: - image_resource: - type: docker-image - source: - repository: bellsoft/liberica-openjdk-debian - tag: 8 - inputs: - - name: geode - platform: linux - run: - path: /bin/sh - args: - - -ec - - | - set -ex - apt update -q - apt install -qq -y --no-install-recommends unzip git - FULL_VERSION=$(cd geode && git describe --tags | sed -e 's#^rel/v##') - VERSION=$(echo $FULL_VERSION|sed -e 's/\.RC.*//') - SHA=$(cd geode && git rev-parse HEAD) - java -version - cd geode - ./gradlew test installDist - gfsh=geode-assembly/build/install/apache-geode/bin/gfsh - $gfsh version --full | grep "^Source-Revision: ${SHA}$" - $gfsh version --full | grep "^Product-Version: ${VERSION}-build" - ! $gfsh version --full | grep Oracle - - name: build-geode-from-src-tgz - serial: true - public: true - plan: - - aggregate: - - get: geode - trigger: true - - task: validate - timeout: 1h - config: - image_resource: - type: docker-image - source: - repository: bellsoft/liberica-openjdk-debian - tag: 8 - inputs: - - name: geode - platform: linux - run: - path: /bin/sh - args: - - -ec - - | - set -ex - apt update -q - apt install -qq -y --no-install-recommends unzip git - FULL_VERSION=$(cd geode && git describe --tags | sed -e 's#^rel/v##') - VERSION=$(echo $FULL_VERSION|sed -e 's/\.RC.*//') - SHA=$(cd geode && git rev-parse HEAD) - curl -L -s https://dist.apache.org/repos/dist/dev/geode/${FULL_VERSION}/apache-geode-${VERSION}-src.tgz > src.tgz - tar xzf src.tgz - cd apache-geode-${VERSION}-src - java -version - ./gradlew test installDist - gfsh=geode-assembly/build/install/apache-geode/bin/gfsh - $gfsh version --full | grep "^Source-Revision: ${SHA}$" - $gfsh version --full | grep "^Product-Version: ${VERSION}-build" - ! $gfsh version --full | grep Oracle - - name: run-gfsh-from-tgz - serial: true - public: true - plan: - - aggregate: - - get: geode - trigger: true - - task: validate - timeout: 1h - config: - image_resource: - type: docker-image - source: - repository: bellsoft/liberica-openjdk-debian - tag: 8 - inputs: - - name: geode - platform: linux - run: - path: /bin/sh - args: - - -ec - - | - set -ex - apt update -q - apt install -qq -y --no-install-recommends git - FULL_VERSION=$(cd geode && git describe --tags | sed -e 's#^rel/v##') - VERSION=$(echo $FULL_VERSION|sed -e 's/\.RC.*//') - SHA=$(cd geode && git rev-parse HEAD) - curl -L -s https://dist.apache.org/repos/dist/dev/geode/${FULL_VERSION}/apache-geode-${VERSION}.tgz > bin.tgz - tar xzf bin.tgz - cd apache-geode-${VERSION} - java -version - gfsh=bin/gfsh - $gfsh version --full | grep "^Source-Revision: ${SHA}$" - $gfsh version --full | grep "^Product-Version: ${VERSION}$" - ! $gfsh version --full | grep Oracle - - name: run-geode-examples-jdk11 - serial: true - public: true - plan: - - aggregate: - - get: geode-examples - trigger: true - - task: validate - timeout: 1h - config: - image_resource: - type: docker-image - source: - repository: bellsoft/liberica-openjdk-debian - tag: 11 - inputs: - - name: geode-examples - platform: linux - run: - path: /bin/sh - args: - - -ec - - | - set -ex - apt update -q - apt install -qq -y --no-install-recommends unzip - cd geode-examples - java -version - ./gradlew runAll - - name: run-geode-examples-from-src-tgz-jdk8 - serial: true - public: true - plan: - - aggregate: - - get: geode-examples - trigger: true - - task: validate - timeout: 1h - config: - image_resource: - type: docker-image - source: - repository: bellsoft/liberica-openjdk-debian - tag: 8 - inputs: - - name: geode-examples - platform: linux - run: - path: /bin/sh - args: - - -ec - - | - set -ex - apt update -q - apt install -qq -y --no-install-recommends unzip git - FULL_VERSION=$(cd geode-examples && git describe --tags | sed -e 's#^rel/v##' -e 's#-.*##') - VERSION=$(echo $FULL_VERSION|sed -e 's/\.RC.*//') - if [ "${FULL_VERSION}" = "${VERSION}" ] ; then - GRADLE_ARGS="" - curl -L -s https://downloads.apache.org/geode/${VERSION}/apache-geode-examples-${VERSION}-src.tgz > src.tgz - else - STAGING_MAVEN=$(cat geode-examples/gradle.properties | grep geodeRepositoryUrl | awk '{print $3}') - GRADLE_ARGS="-PgeodeReleaseUrl=https://dist.apache.org/repos/dist/dev/geode/${FULL_VERSION} -PgeodeRepositoryUrl=${STAGING_MAVEN}" - curl -L -s https://dist.apache.org/repos/dist/dev/geode/${FULL_VERSION}/apache-geode-examples-${VERSION}-src.tgz > src.tgz - fi - tar xzf src.tgz - cd apache-geode-examples-${VERSION}-src - java -version - ./gradlew ${GRADLE_ARGS} build runAll - - name: build-geode-native-from-tag - serial: true - public: true - plan: - - aggregate: - - get: geode-native - trigger: true - - task: validate - timeout: 1h - config: - image_resource: - type: docker-image - source: - repository: bellsoft/liberica-openjdk-debian - tag: 8 - inputs: - - name: geode-native - platform: linux - run: - path: /bin/sh - args: - - -ec - - | - set -ex - apt update -q - apt install -qq -y --no-install-recommends git - FULL_VERSION=$(cd geode-native && git describe --tags | sed -e 's#^rel/v##') - VERSION=$(echo $FULL_VERSION|sed -e 's/\.RC.*//') - #use geode from binary dist - curl -L -s https://dist.apache.org/repos/dist/dev/geode/${FULL_VERSION}/apache-geode-${VERSION}.tgz > geode-bin.tgz - tar xzf geode-bin.tgz - # needed to get cmake >= 3.12 - echo 'APT::Default-Release "stable";' >> /etc/apt/apt.conf.d/99defaultrelease - echo 'deb http://ftp.de.debian.org/debian/ stable main contrib non-free' >> /etc/apt/sources.list.d/stable.list - echo 'deb-src http://ftp.de.debian.org/debian/ stable main contrib non-free' >> /etc/apt/sources.list.d/stable.list - echo 'deb http://security.debian.org/ stable/updates main contrib non-free' >> /etc/apt/sources.list.d/stable.list - apt-get update - DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y cmake openssl doxygen build-essential libssl-dev zlib1g-dev - cd geode-native - mkdir build - cd build - cmake .. -DGEODE_ROOT=$PWD/../../apache-geode-${VERSION} - cmake --build . -- -j 4 - cmake --build . --target docs -- -j 4 - cmake --build . --target install -- -j 4 - - name: build-geode-native-from-src-tgz - serial: true - public: true - plan: - - aggregate: - - get: geode-native - trigger: true - - get: geode - - task: validate - timeout: 1h - config: - image_resource: - type: docker-image - source: - repository: bellsoft/liberica-openjdk-debian - tag: 8 - inputs: - - name: geode-native - - name: geode - platform: linux - run: - path: /bin/sh - args: - - -ec - - | - set -ex - apt update -q - apt install -qq -y --no-install-recommends unzip git - FULL_VERSION=$(cd geode-native && git describe --tags | sed -e 's#^rel/v##') - VERSION=$(echo $FULL_VERSION|sed -e 's/\.RC.*//') - # build geode from source - cd geode - ./gradlew build -x test -x javadoc -x rat -x pmdMain - cd .. - # needed to get cmake >= 3.12 - echo 'APT::Default-Release "stable";' >> /etc/apt/apt.conf.d/99defaultrelease - echo 'deb http://ftp.de.debian.org/debian/ stable main contrib non-free' >> /etc/apt/sources.list.d/stable.list - echo 'deb-src http://ftp.de.debian.org/debian/ stable main contrib non-free' >> /etc/apt/sources.list.d/stable.list - echo 'deb http://security.debian.org/ stable/updates main contrib non-free' >> /etc/apt/sources.list.d/stable.list - apt-get update - DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y cmake openssl doxygen build-essential libssl-dev zlib1g-dev - curl -L -s https://dist.apache.org/repos/dist/dev/geode/${FULL_VERSION}/apache-geode-native-${VERSION}-src.tgz > src.tgz - tar xzf src.tgz - cd apache-geode-native-${VERSION}-src - mkdir build - cd build - cmake .. -DGEODE_ROOT=$PWD/../../geode/geode-assembly/build/install/apache-geode - cmake --build . -- -j 4 - cmake --build . --target docs -- -j 4 - cmake --build . --target install -- -j 4 - - name: upthewaterspout - serial: true - public: true - plan: - - aggregate: - - get: geode - trigger: true - - get: upthewaterspout-tests - - get: geode-examples - - task: validate - timeout: 1h - config: - image_resource: - type: docker-image - source: - repository: bellsoft/liberica-openjdk-debian - tag: 8 - inputs: - - name: geode - - name: upthewaterspout-tests - - name: geode-examples - platform: linux - run: - path: /bin/sh - args: - - -ec - - | - set -ex - apt update -q - apt install -qq -y --no-install-recommends unzip git gpg - FULL_VERSION=$(cd geode && git describe --tags | sed -e 's#^rel/v##') - VERSION=$(echo $FULL_VERSION|sed -e 's/\.RC.*//') - STAGING_MAVEN=$(cat geode-examples/gradle.properties | grep geodeRepositoryUrl | awk '{print $3}') - cd upthewaterspout-tests - curl -L -s https://dist.apache.org/repos/dist/dev/geode/KEYS > KEYS - gpg --import KEYS - java -version - ./gradlew build -PmavenURL=${STAGING_MAVEN} -PdownloadURL=https://dist.apache.org/repos/dist/dev/geode/${FULL_VERSION}/ -Pversion=${FULL_VERSION} - - name: benchmarks-test - serial: true - public: true - plan: - - get: geode-benchmarks - trigger: true - - task: validate - timeout: 1h - config: - image_resource: - type: docker-image - source: - repository: bellsoft/liberica-openjdk-debian - tag: 8 - inputs: - - name: geode-benchmarks - platform: linux - run: - path: /bin/sh - args: - - -ec - - | - set -ex - apt update -q - apt install -qq -y --no-install-recommends unzip git keychain - FULL_VERSION=$(cd geode-benchmarks && git describe --tags | sed -e 's#^rel/v##') - VERSION=$(echo $FULL_VERSION|sed -e 's/\.RC.*//') - curl -L -s https://dist.apache.org/repos/dist/dev/geode/${FULL_VERSION}/apache-geode-benchmarks-${VERSION}-src.tgz > src.tgz - tar xzf src.tgz - cd apache-geode-benchmarks-${VERSION}-src - java -version - mkdir -p ~/.ssh - ssh-keygen -m PEM -b 2048 -t rsa -f ~/.ssh/id_rsa -q -N "" - cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys - apt-get update - apt-get install openssh-server --no-install-recommends -y - echo "StrictHostKeyChecking no" >> /etc/ssh/ssh_config - service ssh start - echo 'tasks.withType(JavaCompile) { options.encoding = "UTF-8" }' >> geode-benchmarks/build.gradle - ./gradlew build test - - name: verify-expected-files-and-keys - serial: true - public: true - plan: - - aggregate: - - get: geode - trigger: true - - task: validate - timeout: 1h - config: - image_resource: - type: docker-image - source: - repository: bellsoft/liberica-openjdk-debian - tag: 8 - inputs: - - name: geode - platform: linux - run: - path: /bin/bash - args: - - -ec - - | - set -ex - apt update -q - apt install -qq -y --no-install-recommends git gpg - FULL_VERSION=$(cd geode && git describe --tags | sed -e 's#^rel/v##') - VERSION=$(echo $FULL_VERSION|sed -e 's/\.RC.*//') - curl -L -s https://dist.apache.org/repos/dist/dev/geode/KEYS > KEYS - gpg --import KEYS - url=https://dist.apache.org/repos/dist/dev/geode/${FULL_VERSION} - function verifyArtifactSizeSignatureLicenseNoticeAndCopyright { - tld=$1 - file=${tld}.tgz - minfilesize=$2 - maxfilesize=$3 - echo Verifying $file... - asc=${file}.asc - sha=${file}.sha256 - sum=sha256sum - curl -L -s $url/$file > $file - actualfilesize=$(wc -c < $file) - if [ $actualfilesize -lt $minfilesize ] ; then - echo "File size of $file is only $actualfilesize bytes, expected at least $minfilesize" - return 1 - fi - if [ $actualfilesize -gt $maxfilesize ] ; then - echo "File size of $file is $actualfilesize, expected no more than $maxfilesize bytes" - return 1 - fi - curl -L -s $url/$asc > $asc - curl -L -s $url/$sha > $sha - gpg --verify $asc - $sum -c $sha - echo $file >> exp - echo $asc >> exp - echo $sha >> exp - #check that each archive contains all content below a top-level-directory with the same name as the file (sans .tgz) - ! tar tvzf $file | grep -v " ${tld}/" - #check that each archive contains LICENSE and NOTICE - tar tvzf $file | grep " ${tld}/LICENSE" - tar tvzf $file | grep " ${tld}/NOTICE" - #check that NOTICE contains current copyright year and correctly assigns copyright to ASF - tar xzf $file "${tld}/NOTICE" - year=$(date +%Y) - grep "Copyright" "${tld}/NOTICE" - grep -q "Copyright.*${year}.*Apache Software Foundation" "${tld}/NOTICE" - #check that the declared license is of the correct type - tar xzf $file "${tld}/LICENSE" - head -1 "${tld}/LICENSE" | grep -q "Apache License" - } - verifyArtifactSizeSignatureLicenseNoticeAndCopyright apache-geode-${VERSION}-src 10000000 30000000 - verifyArtifactSizeSignatureLicenseNoticeAndCopyright apache-geode-${VERSION} 100000000 150000000 - verifyArtifactSizeSignatureLicenseNoticeAndCopyright apache-geode-examples-${VERSION}-src 50000 2000000 - verifyArtifactSizeSignatureLicenseNoticeAndCopyright apache-geode-native-${VERSION}-src 2000000 4000000 - verifyArtifactSizeSignatureLicenseNoticeAndCopyright apache-geode-benchmarks-${VERSION}-src 50000 500000 - curl -L -s ${url}/ | awk '/>..</{next}/<li>/{gsub(/ *<[^>]*>/,"");print}' | sort > actual-file-list - sort < exp > expected-file-list - set +x - echo "" - if diff -q expected-file-list actual-file-list ; then - echo "The file list at $url matches what is expected and all signatures were verified :)" - else - echo "Expected:" - cat expected-file-list - echo "" - echo "Actual:" - cat actual-file-list - echo "" - echo "Diff:" - diff expected-file-list actual-file-list - exit 1 - fi - - name: verify-no-binaries - serial: true - public: true - plan: - - aggregate: - - get: geode - trigger: true - - task: validate - timeout: 1h - config: - image_resource: - type: docker-image - source: - repository: bellsoft/liberica-openjdk-debian - tag: 8 - inputs: - - name: geode - platform: linux - run: - path: /bin/bash - args: - - -ec - - | - set -e - apt update -q - apt install -qq -y --no-install-recommends git - FULL_VERSION=$(cd geode && git describe --tags | sed -e 's#^rel/v##') - VERSION=$(echo $FULL_VERSION|sed -e 's/\.RC.*//') - url=https://dist.apache.org/repos/dist/dev/geode/${FULL_VERSION} - BINARY_EXTENSIONS="jar|war|class|exe|dll|o|so|obj|bin|out|pyc" - echo "Source artifacts should not contain any files ending in$(echo "|${BINARY_EXTENSIONS}"|sed 's/[^a-z]/ ./g')" - echo "" - function verifyNoBinaries { - file=$1 - echo "" - echo Checking $file... - curl -L -s $url/$file | tar tvzf - | egrep '\.('"${BINARY_EXTENSIONS}"')$' | tee -a bins - } - verifyNoBinaries apache-geode-${VERSION}-src.tgz - verifyNoBinaries apache-geode-examples-${VERSION}-src.tgz - verifyNoBinaries apache-geode-native-${VERSION}-src.tgz - verifyNoBinaries apache-geode-benchmarks-${VERSION}-src.tgz - echo "" - echo "" - if grep -q . bins ; then - echo Binary files were found! - exit 1 - else - echo All good - fi - - name: verify-license - serial: true - public: true - plan: - - aggregate: - - get: geode - trigger: true - - aggregate: - - get: geode-develop - - task: validate - timeout: 1h - config: - image_resource: - type: docker-image - source: - repository: bellsoft/liberica-openjdk-debian - tag: 8 - inputs: - - name: geode - - name: geode-develop - platform: linux - run: - path: /bin/bash - args: - - -ec - - | - set -e - apt update -q - apt install -qq -y --no-install-recommends unzip git - FULL_VERSION=$(cd geode && git describe --tags | sed -e 's#^rel/v##') - ./geode-develop/dev-tools/release/license_review.sh -v $FULL_VERSION -EOF -fly -t concourse.apachegeode-ci.info-main login --team-name main --concourse-url https://concourse.apachegeode-ci.info/ -fly -t concourse.apachegeode-ci.info-main set-pipeline -p apache-support-${VERSION_MM//./-}-rc -c $PIPEYML -fly -t concourse.apachegeode-ci.info-main unpause-pipeline -p apache-support-${VERSION_MM//./-}-rc -fly -t concourse.apachegeode-ci.info-main expose-pipeline -p apache-support-${VERSION_MM//./-}-rc -rm $PIPEYML diff --git a/dev-tools/release/end_of_support.sh b/dev-tools/release/end_of_support.sh deleted file mode 100755 index 38f69b9..0000000 --- a/dev-tools/release/end_of_support.sh +++ /dev/null @@ -1,155 +0,0 @@ -#!/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. - -set -e - -usage() { - echo "Usage: end_of_support.sh -v version_number" - echo " -v The #.# version number of the support branch that is no longer supported" - exit 1 -} - -VERSION_MM="" - -while getopts ":v:" opt; do - case ${opt} in - v ) - VERSION_MM=$OPTARG - ;; - \? ) - usage - ;; - esac -done - -if [[ ${VERSION_MM} == "" ]] ; then - usage -fi - -if [[ $VERSION_MM =~ ^([0-9]+\.[0-9]+)$ ]]; then - true -else - echo "Malformed version number ${VERSION_MM}. Example valid version: 1.9" - exit 1 -fi - -set -x -WORKSPACE=$PWD/support-${VERSION_MM}-workspace -GEODE=$WORKSPACE/geode -GEODE_EXAMPLES=$WORKSPACE/geode-examples -GEODE_NATIVE=$WORKSPACE/geode-native -GEODE_BENCHMARKS=$WORKSPACE/geode-benchmarks -set +x - -function failMsg1 { - echo "ERROR: script did NOT complete successfully. Please try again." -} -trap failMsg1 ERR - - -echo "" -echo "============================================================" -echo "Cleaning workspace directory..." -echo "============================================================" -set -x -rm -rf $WORKSPACE -mkdir -p $WORKSPACE -cd $WORKSPACE -set +x - - -echo "" -echo "============================================================" -echo "Cloning repositories..." -echo "============================================================" -set -x -git clone --branch support/${VERSION_MM} g...@github.com:apache/geode.git -git clone --branch support/${VERSION_MM} g...@github.com:apache/geode-examples.git -git clone --branch support/${VERSION_MM} g...@github.com:apache/geode-native.git -git clone --branch support/${VERSION_MM} g...@github.com:apache/geode-benchmarks.git -set +x - - -echo "" -echo "============================================================" -echo "Confirming end of support" -echo "============================================================" -cd ${GEODE} -echo "Geode support branches should be kept for at least 9 months after initial release." -echo "Geode ${VERSION_MM}.0 was released about $(git log -1 --format=%ar rel/v${VERSION_MM}.0)" -read -p "To continue and delete support/${VERSION_MM} and all associated pipelines, type YES if you are sure: " -if [ "$REPLY" != "YES" ] ; then - echo cancelled - exit 1 -fi - - -function failMsg2 { - errln=$1 - echo "ERROR: script did NOT complete successfully" - echo "Comment out any steps that already succeeded (approximately lines 65-$(( errln - 1 ))) and try again" -} -trap 'failMsg2 $LINENO' ERR - - -echo "" -echo "============================================================" -echo "Destroying pipelines" -echo "============================================================" -set -x -cd ${0%/*}/../../ci/pipelines/meta -DEVELOP_META=$(pwd) -cd ${GEODE} -fly -t concourse.apachegeode-ci.info-main login --team-name main --concourse-url https://concourse.apachegeode-ci.info/ -${DEVELOP_META}/destroy_pipelines.sh -set +x - - -echo "" -echo "============================================================" -echo "Destroying support branches" -echo "============================================================" -for DIR in ${GEODE} ${GEODE_EXAMPLES} ${GEODE_NATIVE} ${GEODE_BENCHMARKS} ; do - set -x - cd ${DIR} - git checkout develop - git push origin --delete support/${VERSION_MM} - git branch -D support/${VERSION_MM} - set +x -done - - -echo "" -echo "============================================================" -echo "Cleaning up RC tags" -echo "============================================================" -for DIR in ${GEODE} ${GEODE_EXAMPLES} ${GEODE_NATIVE} ${GEODE_BENCHMARKS} ; do - set -x - cd ${DIR} - git tag | grep "^rel/v${VERSION_MM}.*RC" | while read RCTAG ; do - git push origin --delete "$RCTAG" - done - set +x -done - - -echo "" -echo "============================================================" -echo 'Done shutting down the support branch!' -echo "============================================================" -echo "Don't forget to remove the JIRA Release placeholder for any future ${VERSION_MM}.x" -echo "Probably also a good idea to announce on the dev list that support/${VERSION_MM} has expired" diff --git a/dev-tools/release/license_review.sh b/dev-tools/release/license_review.sh deleted file mode 100755 index 7751ecc..0000000 --- a/dev-tools/release/license_review.sh +++ /dev/null @@ -1,362 +0,0 @@ -#!/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. - -set -e - -usage() { - echo "Usage: license_review.sh -v version_number_or_tgz [-p previous_version_number_or_tgz]" - echo " -v The #.#.#.RC# or #.#.# version number to review -or- a path or URL to .tgz -or- 'HEAD'" - echo " -p The #.#.#.RC# or #.#.# version number to compare against -or- a path or URL to .tgz" - echo " -n No license check (useful if you just want the version comparison)" - echo " -s No source license check (just check the binary license)" - exit 1 -} - - -while getopts ":v:p:ns" opt; do - case ${opt} in - v ) - NEW_VERSION=$OPTARG - ;; - p ) - OLD_VERSION=$OPTARG - ;; - n ) - SKIP_LICENSES=true - ;; - s ) - SKIP_SRC_LICENSE=true - ;; - \? ) - usage - ;; - esac -done - -if [ -z "${NEW_VERSION}" ] ; then - usage -fi - -WORKSPACE=$(pwd)/license_tmp -DOWNLOAD=${WORKSPACE}/download -EXTRACT=${WORKSPACE}/extracted -mkdir -p ${DOWNLOAD} -mkdir -p ${EXTRACT} -root=$0 -root=${root%/dev-tools*} - -if [ "$NEW_VERSION" = "HEAD" ] ; then - licFromWs=true - rm -Rf $root/geode-assembly/build/distributions -fi - - -function resolve() { - [ -n "$1" ] || return - spec=$1 - suffix=$2 - if [ "HEAD" = "$spec" ] ; then - [ "${suffix}" = "-src" ] && target=srcDistTar || target=distTar - (cd $root && ./gradlew ${target} 1>&2) - spec=$root/geode-assembly/build/distributions/$(cd $root/geode-assembly/build/distributions && ls -t | grep -v sha256 | grep "apache-geode-.*-build.[0-9][0-9]*${suffix}.tgz" | tail -1) - [ -r "$spec" ] || echo "Build not found: $spec" 1>&2 - [ -r "$spec" ] - fi - - if [[ $spec =~ ^([0-9]+\.[0-9]+\.[0-9]+)\.(RC[0-9]+)$ ]]; then - mmp=$(echo $spec | sed 's/.RC.*//') - #bare RC version -> RC url - spec=https://dist.apache.org/repos/dist/dev/geode/${spec}/apache-geode-${mmp}${suffix}.tgz - elif [[ $spec =~ ^([0-9]+\.[0-9]+\.[0-9]+)$ ]]; then - #bare released version -> release url - spec=https://downloads.apache.org/geode/${spec}/apache-geode-${spec}${suffix}.tgz - elif echo "$spec" | grep -q '^http.*tgz$' ; then - #tgz url - echo "$spec" | grep -q -- "${suffix}.tgz$" || return - elif [ -r "$spec" ] && echo "$spec" | grep -q 'tgz$' ; then - #tgz file present locally - echo "$spec" | grep -q -- "${suffix}.tgz$" || return - else - #unsupported - return - fi - - #download if url (and not already downloaded) - if echo "$spec" | grep -q '^http.*tgz$' ; then - filename=$(echo $spec | sed 's#.*/##') - [ -r ${DOWNLOAD}/$filename ] || curl -L "$spec" > ${DOWNLOAD}/$filename - spec=${DOWNLOAD}/$filename - fi - - #extract it (if not already extracted) - dirname=$(echo $spec | sed -e 's#.*/##' -e 's#.tgz$##') - [ "${licFromWs}" = "true" ] && rm -Rf ${EXTRACT}/$dirname - [ -d ${EXTRACT}/$dirname ] || tar xzf $spec -C ${EXTRACT} - [ -d ${EXTRACT}/$dirname ] && echo ${EXTRACT}/$dirname -} - -NEW_DIR=$(resolve $NEW_VERSION) - -if [ -z "${NEW_DIR}" ] || [ ! -d "${NEW_DIR}" ] ; then - usage -fi - -if [ "${licFromWs}" = "true" ] && ! [ "$SKIP_LICENSES" = "true" ] && ! [ "$SKIP_SRC_LICENSE" = "true" ] ; then - NEW_SRC_DIR=$(resolve $NEW_VERSION -src) -fi - -function banner() { - echo "" - echo "$@" | sed 's/./=/g' - echo "$@" - echo "$@" | sed 's/./=/g' -} - -function listJarsInWar() { - war=$1 - jar tvf $war | awk '/.jar$/{print "'"$war"'/"$8}' -} - -function extractLicense() { - war=$1 - rm -Rf tmpl - mkdir tmpl - cd tmpl - jar xf ../$war META-INF/LICENSE - cd .. - cp tmpl/META-INF/LICENSE $2 - rm -Rf tmpl -} - -function generateList() { - dir=$1 - banner "Listing 3rd-party deps in ${dir##*/}" - - #also extract geode jar licenses for later checking - (cd $dir; find . -name '*.jar' | egrep '(geode|gfsh)-' | sort | sed 's#^./##' | while read geodejar ; do - extractLicense $geodejar ${geodejar%.jar}.LICENSE - done) - - echo "**** ${dir##*/} jars ****" | tr '[:lower:]-' '[:upper:] ' > $dir/report1 - (cd $dir; find . -name '*.jar' | grep -v geode- | grep -v gfsh- | sort | sed 's#^./##' | tee -a report1) - - echo "**** ${dir##*/} wars ****" | tr '[:lower:]-' '[:upper:] ' > $dir/report2 - (cd $dir; find . -name '*.war' | sort | sed 's#^./##' | while read war ; do - listJarsInWar $war | sed 's#-[v0-9][-0-9.SNAPSHOTbuild]*[.]#.#' | sort - extractLicense $war ${war%.war}.LICENSE - done | tee -a report2) -} - -generateList $NEW_DIR -if [ -n "${OLD_VERSION}" ] ; then - OLD_DIR=$(resolve $OLD_VERSION) - generateList $OLD_DIR - - banner "Diffing 3rd-party deps changes from ${OLD_DIR##*/} to ${NEW_DIR##*/}" - for REPORT in report1 report2 ; do - diff -y -W $(tput cols) $OLD_DIR/$REPORT $NEW_DIR/$REPORT | grep '[<|>]' - done -fi - -[ "$SKIP_LICENSES" = "true" ] && exit 0 - -banner "Checking that all binary licenses are identical" -sizes=$(find $NEW_DIR -name '*LICENSE' | xargs wc -c | grep -v total | awk '{print $1}' | sort -u | wc -l) -if [ $sizes -gt 1 ] ; then - echo "NOT all LICENSES are the same:" - (cd $NEW_DIR; find * -name '*LICENSE' | xargs wc -c | grep -v total | sort) - result=1 -else - echo 'All Good!' -fi - -function isApache2() { - apache="HikariCP -accessors-smart -byte-buddy -classmate -commons-beanutils -commons-codec -commons-collections -commons-digester -commons-fileupload -commons-io -commons-lang3 -commons-logging -commons-math3 -commons-modeler -commons-text -commons-validator -content-type -error_prone_annotations -failureaccess -fastutil -findbugs-annotations -geo -guava -grumpy- -httpclient -httpcore -j2objc-annotations -jackson- -jcip-annotations -jna -json-path -json-smart -jsr305 -jetty- -jgroups -jna- -lang-tag -listenablefuture -log4j- -lucene- -mapstruct -micrometer-core -netty-all -nimbus-jose-jwt -oauth2-oidc-sdk -rmiio -shiro- -snappy -spring- -springfox- -swagger-annotations -swagger-models" - echo "$1" | egrep -q "(mx4j-remote|jaxb-api|$(echo -n "$apache" | tr '\n' '|'))" -} -function shortenDep() { - echo "$1" | sed \ - -e 's/-api//' \ - -e 's/-impl//' \ - -e 's/-java//' \ - -e 's/shiro-.*/shiro-*/' \ - -e 's/jackson-.*/shiro-*/' \ - -e 's/jetty-.*/jetty-*/' \ - -e 's/jna-.*/jna-*/' \ - -e 's/lucene-.*/lucene-*/' \ - -e 's/log4j-.*/log4j-*/' \ - -e 's/mx4j-.*/mx4j*/' \ - -e 's/spring-.*/spring-*/' \ - -e 's/springfox-.*/springfox-*/' -} -for REPORT in report1 report2 ; do - [ "$REPORT" = "report1" ] && topic=JAR || topic=WAR - if [ "${licFromWs}" = "true" ] ; then - LICENSE=${root}/geode-assembly/src/main/dist/LICENSE - else - [ "$REPORT" = "report1" ] && LICENSE=${NEW_DIR}/LICENSE || LICENSE=${NEW_DIR}/tools/Pulse/$(cd ${NEW_DIR}/tools/Pulse; ls | grep LICENSE) - fi - LICENSE=${LICENSE#./} - banner "Comparing $topic dep versions in ${NEW_DIR##*/} to $LICENSE" - rm -f missing-$REPORT apache-$REPORT - touch missing-$REPORT apache-$REPORT - tail -n +2 $NEW_DIR/$REPORT | sed -e 's#.*/##' -e 's/.jar//' | sed 's/-\([0-9]\)/ \1/' | sort -u | grep -v '^ra$' | while read dep ver; do - if isApache2 $dep ; then - echo $dep $ver >> apache-$REPORT - else - echo $(shortenDep $dep) $ver - fi - done | sort -u | while read dep ver ; do - if grep -qi "${dep//-/.}.*$ver" $LICENSE ; then - echo "$dep $ver Found (and version matches)" - elif grep -qi $dep $LICENSE ; then - match="$(grep -i $dep $LICENSE | grep -v License | head -1)" - if echo $match | grep -q '[0-9][0-9]*[.][0-9][0-9]*' ; then - echo "$dep FOUND WITH A DIFFERENT VERSION, PLEASE UPDATE TO $ver:" >> missing-$REPORT - echo "$match" >> missing-$REPORT - else - echo "$dep $ver probably found (without version):" - echo "$match" - fi - else - echo "$LICENSE FAILS TO MENTION $dep v$ver" >> missing-$REPORT - fi - done - echo $(wc -l < apache-$REPORT) "deps are licensed under Apache 2.0 (no need to mention individually)" - rm apache-$REPORT - if [ $(wc -l < missing-$REPORT) -eq 0 ] ; then - echo 'All Good!' - else - cat missing-$REPORT - rm missing-$REPORT - result=1 - fi -done - -function checkMissing() { - rm -f missing - touch missing - grep '^ - ' | sed -e 's/^ - //' -e 's/, .*//' -e 's/ (.*//' -e 's/s* v.*//' -e 's/ /.?/g' | while read f; do - if (cd ${root} && git grep -Eqi "$f" -- ':!LICENSE' ':!**/LICENSE' ':!NOTICE' ':!**/NOTICE') ; then - true - #echo "${f//\?/} found" - else - echo "${f//\?/} appears to be unused. Please remove from $1" >> missing - fi - done - if [ $(wc -l < missing) -eq 0 ] ; then - echo 'All Good!' - rm missing - else - cat missing - rm missing - return 1 - fi -} - -if [ "${licFromWs}" = "true" ] ; then - banner "Checking that binary license is a superset of src license" - SLICENSE=${root}/LICENSE - BLICENSE=${root}/geode-assembly/src/main/dist/LICENSE - if diff $SLICENSE $BLICENSE | grep -q '^<' ; then - echo $(diff $SLICENSE $BLICENSE | grep '^<' | wc -l) "lines appear in $SLICENSE that were not found in $BLICENSE." - echo "Please ensure the binary license is a strict superset of the source license." - echo "(diff $SLICENSE $BLICENSE)" - result=1 - else - echo 'All Good!' - fi - - banner "Checking that binary license is correct" - if diff -q ${BLICENSE} ${NEW_DIR}/LICENSE ; then - echo 'All Good!' - else - echo "Incorrect LICENSE in binary distribution" - echo "Expected:" $(wc -c ${BLICENSE}) - echo "Actual:" $(wc -c ${NEW_DIR}/LICENSE) - fi - - if ! [ "$SKIP_SRC_LICENSE" = "true" ] ; then - banner "Checking that source license is correct" - if diff -q ${SLICENSE} ${NEW_SRC_DIR}/LICENSE ; then - echo 'All Good!' - else - echo "Incorrect LICENSE in source distribution" - echo "Expected:" $(wc -c ${SLICENSE}) - echo "Actual:" $(wc -c ${NEW_SRC_DIR}/LICENSE) - fi - - banner "Checking references in source license" - cat $SLICENSE | checkMissing $SLICENSE - - banner "Checking references in binary license" - cat $SLICENSE $SLICENSE $BLICENSE | sort | uniq -u | checkMissing $BLICENSE - fi -fi - -exit $result diff --git a/dev-tools/release/prepare_rc.sh b/dev-tools/release/prepare_rc.sh deleted file mode 100755 index 382dfdd..0000000 --- a/dev-tools/release/prepare_rc.sh +++ /dev/null @@ -1,347 +0,0 @@ -#!/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. - -set -e - -usage() { - echo "Usage: prepare_rc -v version_number -k signing_key -a apache_ldap_username" - echo " -v The #.#.#.RC# version number" - echo " -k Your 8 digit GPG key id (the last 8 digits of your gpg fingerprint)" - echo " -a Your apache LDAP username (that you use to log in to https://id.apache.org)" - exit 1 -} - -checkCommand() { - COMMAND=$1 - if ! [[ -x "$(command -v $COMMAND)" ]]; then - echo "$COMMAND must be installed" - exit 1 - fi -} - -FULL_VERSION="" -SIGNING_KEY="" -APACHE_USERNAME="" - -while getopts ":v:k:a:" opt; do - case ${opt} in - v ) - FULL_VERSION=$OPTARG - ;; - k ) - SIGNING_KEY=$OPTARG - ;; - a ) - APACHE_USERNAME=$OPTARG - ;; - \? ) - usage - ;; - esac -done - -if [[ ${FULL_VERSION} == "" ]] || [[ ${SIGNING_KEY} == "" ]] || [[ ${APACHE_USERNAME} == "" ]]; then - usage -fi - -if [[ $SIGNING_KEY =~ ^[0-9A-Fa-f]{8}$ ]]; then - true -else - echo "Malformed signing key ${SIGNING_KEY}. Example valid key: ABCD1234" - exit 1 -fi - -if [[ $FULL_VERSION =~ ^([0-9]+\.[0-9]+\.[0-9]+)\.(RC[0-9]+)$ ]]; then - VERSION=${BASH_REMATCH[1]} -else - echo "Malformed version number ${FULL_VERSION}. Example valid version: 1.9.0.RC1" - exit 1 -fi - -VERSION_MM=${VERSION%.*} - -checkCommand gpg -checkCommand cmake -checkCommand svn -checkCommand doxygen - -echo "" -echo "============================================================" -echo "Checking gpg... (you will be prompted to enter passphrase)" -echo "============================================================" -SECRING=~/.gnupg/secring.gpg -! [ -r $SECRING ] || SECRING=/dev/null -if gpg --export-secret-keys > ${SECRING} && echo "1234" | gpg -o /dev/null --local-user ${SIGNING_KEY} -as - ; then - echo "You entered the correct passphrase; proceeding." - echo "Please note, you will still need to enter it a few more times." - echo "PLEASE NOTE, the very last prompt will be for your apache password (not gpg). Pay attention as the prompts look very similar." -else - echo "Hmm, gpg seems unhappy. Check that you entered correct passphrase or refer to release wiki for troubleshooting." - exit 1 -fi -if ! gpg --list-keys ${SIGNING_KEY} | grep -q "${APACHE_USERNAME}@apache.org" ; then - echo "Please specify a gpg key that is associated with your apache email address." - echo "Expected: ${APACHE_USERNAME}@apache.org" - echo "Found: $(gpg --list-keys ${SIGNING_KEY} | grep ^uid | sed -e 's/.*<//' -e 's/>.*//')" - exit 1 -fi - - -set -x -WORKSPACE=$PWD/release-${VERSION}-workspace -GEODE=$WORKSPACE/geode -GEODE_EXAMPLES=$WORKSPACE/geode-examples -GEODE_NATIVE=$WORKSPACE/geode-native -GEODE_BENCHMARKS=$WORKSPACE/geode-benchmarks -BREW_DIR=$WORKSPACE/homebrew-core -SVN_DIR=$WORKSPACE/dist/dev/geode -if which shasum >/dev/null; then - SHASUM="shasum -a 256" -else - SHASUM=sha256sum -fi -set +x - - -function failMsg1 { - echo "ERROR: script did NOT complete successfully. Please try again." -} -trap failMsg1 ERR - - -echo "" -echo "============================================================" -echo "Cleaning workspace directory..." -echo "============================================================" -set -x -rm -rf $WORKSPACE -mkdir -p $WORKSPACE -cd $WORKSPACE -set +x - - -echo "" -echo "============================================================" -echo "Cloning repositories..." -echo "============================================================" -set -x -git clone --single-branch --branch support/${VERSION_MM} g...@github.com:apache/geode.git -#(cd geode; git reset --hard $desired_sha) #uncomment if latest commit is not the one desired -git clone --single-branch --branch develop g...@github.com:apache/geode.git geode-develop -git clone --single-branch --branch support/${VERSION_MM} g...@github.com:apache/geode-examples.git -git clone --single-branch --branch support/${VERSION_MM} g...@github.com:apache/geode-native.git -git clone --single-branch --branch develop g...@github.com:apache/geode-native.git geode-native-develop -git clone --single-branch --branch support/${VERSION_MM} g...@github.com:apache/geode-benchmarks.git -git clone --single-branch --branch master g...@github.com:Homebrew/homebrew-core.git - -svn checkout https://dist.apache.org/repos/dist --depth empty -svn update --set-depth immediates --parents dist/release/geode -svn update --set-depth infinity --parents dist/dev/geode -set +x - -for REPO in ${GEODE} ${WORKSPACE}/geode-develop ${GEODE_EXAMPLES} ${GEODE_NATIVE} ${GEODE_BENCHMARKS} ${BREW_DIR} ; do - cd ${REPO} - git config user.email "${APACHE_USERNAME}@apache.org" -done - -cd ${GEODE}/../.. -set -x -${0%/*}/set_copyright.sh ${GEODE} ${GEODE_EXAMPLES} ${GEODE_NATIVE} ${GEODE_BENCHMARKS} -set +x - - -echo "" -echo "============================================================" -echo "Keeping -build.0 suffix" -echo "============================================================" -cd ${GEODE}/../.. -set -x -${0%/*}/set_versions.sh -v ${VERSION} -n -w ${WORKSPACE} -set +x - - -echo "" -echo "============================================================" -echo "Building geode..." -echo "============================================================" -set -x -cd ${GEODE} -git clean -fdx && ./gradlew build -x test publishToMavenLocal -Pversion=${VERSION} -Paskpass -Psigning.keyId=${SIGNING_KEY} -Psigning.secretKeyRingFile=${HOME}/.gnupg/secring.gpg -set +x - - -if [ "${FULL_VERSION##*.RC}" -gt 1 ] ; then - echo "" - echo "============================================================" - echo "Removing previous RC's temporary commit from geode-examples..." - echo "============================================================" - set -x - cd ${GEODE_EXAMPLES} - git pull - set +x - sed -e 's#^geodeRepositoryUrl *=.*#geodeRepositoryUrl =#' \ - -e 's#^geodeReleaseUrl *=.*#geodeReleaseUrl =#' -i.bak gradle.properties - rm gradle.properties.bak - set -x - git add gradle.properties - if [ $(git diff --staged | wc -l) -gt 0 ] ; then - git diff --staged --color | cat - git commit -m 'Revert "temporarily point to staging repo for CI purposes"' - fi - set +x -fi - - -echo "" -echo "============================================================" -echo "Building geode-examples..." -echo "============================================================" -set -x -cd ${GEODE_EXAMPLES} -git clean -dxf && ./gradlew -Pversion=${VERSION} -PsignArchives -PgeodeReleaseUrl="file://${GEODE}/geode-assembly/build/geode-assembly/build/distributions/apache-geode-${VERSION}" -PgeodeRepositoryUrl="file://${HOME}/.m2/repository" -Psigning.keyId=${SIGNING_KEY} -Psigning.secretKeyRingFile=${HOME}/.gnupg/secring.gpg build -set +x - - -echo "" -echo "============================================================" -echo "Building geode-native..." -echo "============================================================" -set -x -cd ${GEODE_NATIVE} -mkdir build -which brew >/dev/null && OPENSSL_ROOT_DIR=$(brew --prefix openssl) || OPENSSL_ROOT_DIR=$(which openssl) -cd ${GEODE_NATIVE}/build -cmake .. -DPRODUCT_VERSION=${VERSION} -DOPENSSL_ROOT_DIR=$OPENSSL_ROOT_DIR -DGEODE_ROOT=${GEODE}/geode-assembly/build/install/apache-geode -cpack -G TGZ --config CPackSourceConfig.cmake -NCOUT=apache-geode-native-${VERSION}-src.tar.gz -NCTGZ=apache-geode-native-${VERSION}-src.tgz -mkdir repkg-temp -cd repkg-temp -tar xzf ../${NCOUT} -rm ../${NCOUT}* -mv apache-geode-native apache-geode-native-${VERSION}-src -tar czf ../${NCTGZ} * -cd .. -rm -Rf repkg-temp -gpg --armor -u ${SIGNING_KEY} -b ${NCTGZ} -${SHASUM} ${NCTGZ} > ${NCTGZ}.sha256 -set +x - - -echo "" -echo "============================================================" -echo "Building geode-benchmarks..." -echo "============================================================" -set -x -cd ${GEODE_BENCHMARKS} -BMDIR=apache-geode-benchmarks-${VERSION}-src -BMTAR=${BMDIR}.tgz -git clean -dxf -mkdir ../${BMDIR} -cp -r .travis.yml * ../${BMDIR} -tar czf ${BMTAR} -C .. ${BMDIR} -rm -Rf ../${BMDIR} -gpg --armor -u ${SIGNING_KEY} -b ${BMTAR} -${SHASUM} ${BMTAR} > ${BMTAR}.sha256 -set +x - - -function failMsg2 { - errln=$1 - echo "ERROR: script did NOT complete successfully" - echo "Comment out any steps that already succeeded (approximately lines 120-$(( errln - 1 ))) and try again" - echo "For this script only (prepare_rc.sh), it's also safe to just try again from the top" -} -trap 'failMsg2 $LINENO' ERR - - -echo "" -echo "============================================================" -echo "Tagging the release candidate in each repository. The tags will not be pushed yet..." -echo "============================================================" -for DIR in ${GEODE} ${GEODE_EXAMPLES} ${GEODE_NATIVE} ${GEODE_BENCHMARKS} ; do - set -x - cd ${DIR} - git tag -s -u ${SIGNING_KEY} rel/v${FULL_VERSION} -m "Release candidate ${FULL_VERSION}" - set +x -done - - -echo "" -echo "============================================================" -echo "Copying artifacts to svn directory for publication. The artifacts will not be committed..." -echo "============================================================" -set -x -cd ${SVN_DIR} -svn rm ${VERSION}.RC* &>/dev/null || true -cp ${GEODE}/KEYS . -mkdir ${FULL_VERSION} -cp ${GEODE}/geode-assembly/build/distributions/* ${FULL_VERSION} -cp ${GEODE_EXAMPLES}/build/distributions/* ${FULL_VERSION} -cp ${GEODE_NATIVE}/build/apache-geode-native-${VERSION}* ${FULL_VERSION} -cp ${GEODE_BENCHMARKS}/apache-geode-benchmarks-${VERSION}* ${FULL_VERSION} -set +x - -# verify all files are signed. sometimes gradle "forgets" to make the .asc file -for f in ${FULL_VERSION}/*.tgz ; do - if ! [ -r $f.sha256 ] ; then - echo missing $f.sha256 - exit 1 - fi - if ! [ -r $f.asc ] ; then - set -x - gpg --armor -u ${SIGNING_KEY} -b $f - set +x - if ! [ -r $f.asc ] ; then - echo missing $f.asc - exit 1 - fi - fi - size=$(ls -l $f | awk '{print $5}') - if [ $size -lt 10000 ] ; then - echo $f file size is only $size bytes, that seems suspicious. - exit 1 - fi -done - -set -x -svn add ${FULL_VERSION} -set +x - - -echo "" -echo "============================================================" -echo "Publishing artifacts to nexus staging manager..." -echo "PLEASE NOTE, the 2nd prompt will be for your apache (not gpg) password. Pay attention as the prompts look very similar." -echo "============================================================" -set -x -cd ${GEODE} -./gradlew publish -Pversion=${VERSION} -Paskpass -Psigning.keyId=${SIGNING_KEY} -Psigning.secretKeyRingFile=${HOME}/.gnupg/secring.gpg -PmavenUsername=${APACHE_USERNAME} -set +x - - -echo "" -echo "============================================================" -echo "Done preparing the release and staging to nexus! Next steps:" -echo "============================================================" -cd ${GEODE}/../.. -echo "1. Go to https://repository.apache.org, login as ${APACHE_USERNAME}, and click on Staging Repositories" -echo "2. If there is a prior ${VERSION} RC, select it and click Drop." -echo '3. Make a note of the 4-digit ID of the current ("implicitly created") staging repo.' -echo '4. Select the current staging repo and click Close.' -echo '5. Wait ~15 minutes for status to become "Closed"' -echo "6. Run ${0%/*}/commit_rc.sh -v ${FULL_VERSION} -m <4-DIGIT-ID-NOTED-ABOVE>" diff --git a/dev-tools/release/print_rc_email.sh b/dev-tools/release/print_rc_email.sh deleted file mode 100755 index 29e45fe..0000000 --- a/dev-tools/release/print_rc_email.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/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. - -set -e - -usage() { - echo "Usage: print_rc_email.sh -v version_number -m maven_repo_id" - echo " -v The #.#.#.RC# version number" - echo " -m The 4 digit id of the nexus maven repo" - exit 1 -} - -FULL_VERSION="" -MAVEN="" - -while getopts ":v:m:" opt; do - case ${opt} in - v ) - FULL_VERSION=$OPTARG - ;; - m ) - MAVEN=$OPTARG - ;; - \? ) - usage - ;; - esac -done - -if [[ ${FULL_VERSION} == "" ]] || [[ ${MAVEN} == "" ]]; then - usage -fi - -if [[ $FULL_VERSION =~ ^([0-9]+\.[0-9]+\.[0-9]+)\.(RC[0-9]+)$ ]]; then - VERSION=${BASH_REMATCH[1]} -else - echo "Malformed version number ${FULL_VERSION}. Example valid number - 1.9.0.RC1" - exit 1 -fi - -VERSION_MM=${VERSION%.*} - -#support mac or linux date arithmetic syntax -DEADLINE=$(date --date '+5 days' '+%a, %B %d %Y' 2>/dev/null || date -v +5d "+%a, %B %d %Y" 2>/dev/null || echo "<5 days from now>") - -cat << EOF -Hello Geode Dev Community, - -This is a release candidate for Apache Geode version ${FULL_VERSION}. -Thanks to all the community members for their contributions to this release! - -Please do a review and give your feedback, including the checks you performed. - -Voting deadline: -3PM PST ${DEADLINE}. - -Please note that we are voting upon the source tag: -rel/v${FULL_VERSION} - -Release notes: -https://cwiki.apache.org/confluence/display/GEODE/Release+Notes#ReleaseNotes-${VERSION} - -Source and binary distributions: -https://dist.apache.org/repos/dist/dev/geode/${FULL_VERSION}/ - -Maven staging repo: -https://repository.apache.org/content/repositories/orgapachegeode-${MAVEN} - -GitHub: -https://github.com/apache/geode/tree/rel/v${FULL_VERSION} -https://github.com/apache/geode-examples/tree/rel/v${FULL_VERSION} -https://github.com/apache/geode-native/tree/rel/v${FULL_VERSION} -https://github.com/apache/geode-benchmarks/tree/rel/v${FULL_VERSION} - -Pipelines: -https://concourse.apachegeode-ci.info/teams/main/pipelines/apache-support-${VERSION_MM//./-}-main -https://concourse.apachegeode-ci.info/teams/main/pipelines/apache-support-${VERSION_MM//./-}-rc - -Geode's KEYS file containing PGP keys we use to sign the release: -https://github.com/apache/geode/blob/develop/KEYS - -Command to run geode-examples: -./gradlew -PgeodeReleaseUrl=https://dist.apache.org/repos/dist/dev/geode/${FULL_VERSION} -PgeodeRepositoryUrl=https://repository.apache.org/content/repositories/orgapachegeode-${MAVEN} build runAll - -Regards -$(git config --get user.name) -EOF diff --git a/dev-tools/release/promote_rc.sh b/dev-tools/release/promote_rc.sh deleted file mode 100755 index 9d3baaf..0000000 --- a/dev-tools/release/promote_rc.sh +++ /dev/null @@ -1,507 +0,0 @@ -#!/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. - -set -e - -usage() { - echo "Usage: promote_rc.sh -v version_number -k your_full_gpg_public_key -g your_github_username" - echo " -v The #.#.#.RC# version number to ship" - echo " -k Your 8 digit GPG key id (the last 8 digits of your gpg fingerprint)" - echo " -g Your github username" - exit 1 -} - -FULL_VERSION="" -SIGNING_KEY="" -GITHUB_USER="" - -while getopts ":v:k:g:" opt; do - case ${opt} in - v ) - FULL_VERSION=$OPTARG - ;; - k ) - SIGNING_KEY=$OPTARG - ;; - g ) - GITHUB_USER=$OPTARG - ;; - \? ) - usage - ;; - esac -done - -if [[ ${FULL_VERSION} == "" ]] || [[ ${SIGNING_KEY} == "" ]] || [[ ${GITHUB_USER} == "" ]]; then - usage -fi - -SIGNING_KEY=$(gpg --fingerprint "${SIGNING_KEY}" | tr -d ' ' | grep "${SIGNING_KEY}" | tail -1) - -SIGNING_KEY=$(echo $SIGNING_KEY|sed 's/[^0-9A-Fa-f]//g') -if [[ $SIGNING_KEY =~ ^[0-9A-Fa-f]{40}$ ]]; then - true -else - echo "Malformed signing key ${SIGNING_KEY}. Example valid key: ABCD1234" - exit 1 -fi - -if [[ $FULL_VERSION =~ ^([0-9]+\.[0-9]+\.[0-9]+)\.(RC[0-9]+)$ ]]; then - VERSION=${BASH_REMATCH[1]} -else - echo "Malformed version number ${FULL_VERSION}. Example valid version: 1.9.0.RC1" - exit 1 -fi - -VERSION_MM=${VERSION%.*} - -set -x -WORKSPACE=$PWD/release-${VERSION}-workspace -GEODE=$WORKSPACE/geode -GEODE_DEVELOP=$WORKSPACE/geode-develop -GEODE_EXAMPLES=$WORKSPACE/geode-examples -GEODE_NATIVE=$WORKSPACE/geode-native -GEODE_NATIVE_DEVELOP=$WORKSPACE/geode-native-develop -GEODE_BENCHMARKS=$WORKSPACE/geode-benchmarks -BREW_DIR=$WORKSPACE/homebrew-core -SVN_DIR=$WORKSPACE/dist/dev/geode -set +x - -if [ -d "$GEODE" ] && [ -d "$GEODE_DEVELOP" ] && [ -d "$GEODE_EXAMPLES" ] && [ -d "$GEODE_NATIVE" ] && [ -d "$GEODE_NATIVE_DEVELOP" ] && [ -d "$GEODE_BENCHMARKS" ] && [ -d "$BREW_DIR" ] && [ -d "$SVN_DIR" ] ; then - true -else - echo "Please run this script from the same working directory as you initially ran prepare_rc.sh" - exit 1 -fi - - -function failMsg { - errln=$1 - echo "ERROR: script did NOT complete successfully" - echo "Comment out any steps that already succeeded (approximately lines 116-$(( errln - 1 ))) and try again" -} -trap 'failMsg $LINENO' ERR - - -echo "" -echo "============================================================" -echo "Checking for later versions..." -echo "============================================================" -cd ${GEODE_DEVELOP} -latestnv=$(git tag| grep '^rel/v' | grep -v RC | cut -c6- | egrep '^[0-9]+\.[0-9]+\.[0-9]+$' | awk -F. '/KEYS/{next}{print 1000000*$1+1000*$2+$3,$1"."$2"."$3}' | sort -n | tail -1) -latestn=$(echo $latestnv | awk '{print $1}') -latestv=$(echo $latestnv | awk '{print $2}') -thisre=$(echo $VERSION | awk -F. '/KEYS/{next}{print 1000000*$1+1000*$2+$3}') -if [ $latestn -gt $thisre ] ; then - LATER=$latestv - echo "Later version $LATER found; $VERSION will not be merged to master or tagged as 'latest' in docker." -else - echo "No later versions found; $VERSION will be tagged as 'latest' in docker and merged to master" -fi - - -echo "" -echo "============================================================" -echo "Releasing artifacts to mirror sites..." -echo "(note: must be logged in to svn as a PMC member or this will fail)" -echo "============================================================" -set -x -cd ${SVN_DIR}/../.. -svn update -svn mv dev/geode/${FULL_VERSION} release/geode/${VERSION} -cp dev/geode/KEYS release/geode/KEYS -svn commit -m "Releasing Apache Geode ${VERSION} distribution" -set +x - - -echo "" -echo "============================================================" -echo "Tagging ${FULL_VERSION} as ${VERSION} and pushing tags..." -echo "============================================================" -for DIR in ${GEODE} ${GEODE_EXAMPLES} ${GEODE_NATIVE} ${GEODE_BENCHMARKS} ; do - set -x - cd ${DIR} - git tag -s -u ${SIGNING_KEY} rel/v${VERSION} -m "Apache Geode v${VERSION} release" rel/v${FULL_VERSION} - git push origin rel/v${VERSION} - set +x -done - - -echo "" -echo "============================================================" -echo "Waiting for artifacts to publish to downloads.apache.org..." -echo "============================================================" -for suffix in "" .asc .sha256 ; do - file=apache-geode-${VERSION}.tgz - url=https://downloads.apache.org/geode/${VERSION}/${file}${suffix} - expectedsize=$(cd ${SVN_DIR}/../../release/geode/${VERSION}; ls -l ${file}${suffix} | awk '{print $5}') - actualsize=0 - while [ $expectedsize -ne $actualsize ] ; do - while ! curl -s --output /dev/null --head --fail "$url"; do - echo -n . - sleep 3 - done - actualsize=$(curl -s --head "$url" | grep "Content-Length" | awk '{print $2}' | tr -d '\r') - done - echo "$url exists and is correct size" -done - - -echo "" -echo "============================================================" -if [ -n "$LATER" ] ; then - echo "NOT updating brew to avoid overwriting newer version $LATER" - echo "============================================================" -else - echo "Updating brew" - echo "============================================================" - set -x - cd ${BREW_DIR}/Formula - git pull - git remote add myfork g...@github.com:${GITHUB_USER}/homebrew-core.git || true - if ! git fetch myfork ; then - echo "Please fork https://github.com/Homebrew/homebrew-core" - exit 1 - fi - git checkout -b apache-geode-${VERSION} - GEODE_SHA=$(awk '{print $1}' < $WORKSPACE/dist/release/geode/${VERSION}/apache-geode-${VERSION}.tgz.sha256) - set +x - sed -e 's# *url ".*# url "https://www.apache.org/dyn/closer.lua?path=geode/'"${VERSION}"'/apache-geode-'"${VERSION}"'.tgz"#' \ - -e '/ *mirror ".*www.*/d' \ - -e '/ *mirror ".*downloads.*/d' \ - -e 's# *mirror ".*archive.*# mirror "https://archive.apache.org/dist/geode/'"${VERSION}"'/apache-geode-'"${VERSION}"'.tgz"\ - mirror "https://downloads.apache.org/geode/'"${VERSION}"'/apache-geode-'"${VERSION}"'.tgz"#' \ - -e 's/ *sha256 ".*/ sha256 "'"${GEODE_SHA}"'"/' \ - -i.bak apache-geode.rb - rm apache-geode.rb.bak - set -x - git add apache-geode.rb - git diff --staged --color | cat - git commit -m "apache-geode ${VERSION}" - git push -u myfork - set +x -fi - - -echo "" -echo "============================================================" -echo "Updating Geode Dockerfile" -echo "============================================================" -set -x -cd ${GEODE}/docker -git pull -r -set +x -sed -e "s/^ENV GEODE_GPG.*/ENV GEODE_GPG ${SIGNING_KEY}/" \ - -e "s/^ENV GEODE_VERSION.*/ENV GEODE_VERSION ${VERSION}/" \ - -e "s/^ENV GEODE_SHA256.*/ENV GEODE_SHA256 ${GEODE_SHA}/" \ - -i.bak Dockerfile -rm Dockerfile.bak -set -x -git add Dockerfile -git diff --staged --color | cat -git commit -m "update Dockerfile to apache-geode ${VERSION}" -git push -set +x - - -echo "" -echo "============================================================" -echo "Updating Native Dockerfile" -echo "============================================================" -set -x -cd ${GEODE_NATIVE}/docker -git pull -r -set +x -sed -e "s/^ENV GEODE_VERSION.*/ENV GEODE_VERSION ${VERSION}/" \ - -i.bak Dockerfile -rm Dockerfile.bak -set -x -git add Dockerfile -git diff --staged --color | cat -git commit -m "update Dockerfile to apache-geode ${VERSION}" -git push -set +x - - -echo "" -echo "============================================================" -echo "Building Geode docker image" -echo "============================================================" -set -x -cd ${GEODE}/docker -docker build . -docker build -t apachegeode/geode:${VERSION} . -[ -n "$LATER" ] || docker build -t apachegeode/geode:latest . -set +x - - -echo "" -echo "============================================================" -echo "Building Native docker image" -echo "============================================================" -set -x -cd ${GEODE_NATIVE}/docker -docker build . -docker build -t apachegeode/geode-native-build:${VERSION} . -[ -n "$LATER" ] || docker build -t apachegeode/geode-native-build:latest . -set +x - - -echo "" -echo "============================================================" -echo "Publishing Geode docker image" -echo "============================================================" -set -x -cd ${GEODE}/docker -docker login -docker push apachegeode/geode:${VERSION} -[ -n "$LATER" ] || docker push apachegeode/geode:latest -set +x - - -echo "" -echo "============================================================" -echo "Publishing Native docker image" -echo "============================================================" -set -x -cd ${GEODE_NATIVE}/docker -docker push apachegeode/geode-native-build:${VERSION} -[ -n "$LATER" ] || docker push apachegeode/geode-native-build:latest -set +x - - -echo "" -echo "============================================================" -echo "Setting Geode version for geode-native" -echo "============================================================" -set -x -cd ${GEODE_NATIVE} -git pull -set +x - -#.travis.yml -# DOCKER_IMAGE="apachegeode/geode-native-build:latest" -#.lgtm.yml -# GEODE_VERSION=1.12.0 - -sed -e "s/geode-native-build:[latest0-9.]*/geode-native-build:${VERSION}/" \ - -e "s/GEODE_VERSION=[0-9.]*/GEODE_VERSION=${VERSION}/" \ - -i.bak .travis.yml .lgtm.yml - -rm .travis.yml.bak .lgtm.yml.bak -set -x -git add . -if [ $(git diff --staged | wc -l) -gt 0 ] ; then - git diff --staged --color | cat - git commit -m "Bumping Geode version to ${VERSION} for CI" - git push -u origin -fi -set +x - - -if [ -z "$LATER" ] ; then - echo "" - echo "============================================================" - echo "Setting Geode version for geode-native develop" - echo "============================================================" - set -x - cd ${GEODE_NATIVE_DEVELOP} - git pull - set +x - - sed -e "s/geode-native-build:[latest0-9.]*/geode-native-build:latest/" \ - -e "s/GEODE_VERSION=[0-9.]*/GEODE_VERSION=${VERSION}/" \ - -e "s/^ENV GEODE_VERSION.*/ENV GEODE_VERSION ${VERSION}/" \ - -i.bak .travis.yml .lgtm.yml docker/Dockerfile - - rm .travis.yml.bak .lgtm.yml.bak docker/Dockerfile.bak - set -x - git add . - if [ $(git diff --staged | wc -l) -gt 0 ] ; then - git diff --staged --color | cat - git commit -m "Bumping Geode version to ${VERSION} for CI" - git push -u origin - fi - set +x -fi - - -echo "" -echo "============================================================" -echo "Removing temporary commit from geode-examples..." -echo "============================================================" -set -x -cd ${GEODE_EXAMPLES} -git pull -set +x -sed -e 's#^geodeRepositoryUrl *=.*#geodeRepositoryUrl =#' \ - -e 's#^geodeReleaseUrl *=.*#geodeReleaseUrl =#' -i.bak gradle.properties -rm gradle.properties.bak -set -x -git add gradle.properties -git diff --staged --color | cat -git commit -m 'Revert "temporarily point to staging repo for CI purposes"' -git push -set +x - - -echo "" -echo "============================================================" -if [ -n "$LATER" ] ; then - echo "NOT merging to master to avoid overwriting newer version $LATER" - echo "============================================================" -else - echo "Merging to master" - echo "============================================================" - for DIR in ${GEODE} ${GEODE_EXAMPLES} ${GEODE_NATIVE} ${GEODE_BENCHMARKS} ; do - set -x - cd ${DIR} - git remote set-branches --add origin master - git fetch origin - git checkout support/${VERSION_MM} - git checkout -b release/${VERSION} rel/v${VERSION} - #this creates a merge commit that will then be ff-merged to master, so word it from that perspective - git merge -s ours origin/master -m "Replacing master with contents of rel/v${VERSION}" - git checkout master - git merge release/${VERSION} - git push origin master - set +x - done -fi - - -echo "" -echo "============================================================" -echo "Updating 'old' versions and Benchmarks baseline on develop" -echo "============================================================" -set -x -cd ${GEODE_DEVELOP} -git pull -git remote add myfork g...@github.com:${GITHUB_USER}/geode.git || true -git checkout -b add-${VERSION}-to-old-versions -set +x -PATCH=${VERSION##*.} -PREV=${VERSION%.*}.$(( PATCH - 1 )) -#add at the end if this is a new minor or a patch to the latest minor, otherwise add after it's predecessor -if [ $PATCH -eq 0 ] || grep -q "'${PREV}'].each" settings.gradle ; then - #before: - # '1.9.0'].each { - #after: - # '1.9.0', - # '1.10.0'].each { - sed -e "s/].each/,\\ - '${VERSION}'].each/" \ - -i.bak settings.gradle -else - #before: - # '1.9.0', - #after: - # '1.9.0', - # '1.9.1', - sed -e "s/'${PREV}',/'${PREV}',\\ - '${VERSION}'/" \ - -i.bak settings.gradle -fi -rm settings.gradle.bak -if [ $PATCH -eq 0 ] ; then - #also update benchmark baseline for develop to this new minor - sed -e "s/^ baseline_version:.*/ baseline_version: '${VERSION}'/" \ - -i.bak ci/pipelines/shared/jinja.variables.yml - rm ci/pipelines/shared/jinja.variables.yml.bak - BENCHMSG=" and set as Benchmarks baseline" - set -x - git add ci/pipelines/shared/jinja.variables.yml -fi -set -x -git add settings.gradle -git diff --staged --color | cat -git commit -m "add ${VERSION} to old versions${BENCHMSG} on develop" -git push -u myfork -set +x - - -echo "" -echo "============================================================" -echo "Updating 'old' versions on support/$VERSION_MM" -echo "============================================================" -set -x -cd ${GEODE} -git pull -set +x -#add at the end as this release will always be the latest on this branch -sed -e "s/].each/,\\ - '${VERSION}'].each/" \ - -i.bak settings.gradle -rm settings.gradle.bak -set -x -git add settings.gradle -git diff --staged --color | cat -git commit -m "add ${VERSION} to old versions on support/$VERSION_MM" -git push -set +x - - -echo "" -echo "============================================================" -echo "Removing old versions from mirrors" -echo "============================================================" -set -x -cd ${SVN_DIR}/../../release/geode -svn update --set-depth immediates -#identify the latest patch release for "N-2" (the latest 3 major.minor releases), remove anything else from mirrors (all releases remain available on non-mirrored archive site) -RELEASES_TO_KEEP=3 -set +x -ls | awk -F. '/KEYS/{next}{print 1000000*$1+1000*$2+$3,$1"."$2"."$3}'| sort -n | awk '{mm=$2;sub(/\.[^.]*$/,"",mm);V[mm]=$2}END{for(v in V){print V[v]}}'|tail -$RELEASES_TO_KEEP > ../keep -echo Keeping releases: $(cat ../keep) -(ls | grep -v KEYS; cat ../keep ../keep)|sort|uniq -u|while read oldVersion; do - set -x - svn rm $oldVersion - svn commit -m "remove $oldVersion from mirrors (it is still available at http://archive.apache.org/dist/geode)" - set +x - [ -z "$DID_REMOVE" ] || DID_REMOVE="${DID_REMOVE} and " - DID_REMOVE="${DID_REMOVE}${oldVersion}" -done -rm ../keep - - -echo "" -echo "============================================================" -echo 'Done promoting release artifacts!' -echo "============================================================" -cd ${GEODE}/../.. -echo "Next steps:" -echo "1. Click 'Release' in http://repository.apache.org/ (if you haven't already)" -echo "2. Go to https://github.com/${GITHUB_USER}/homebrew-core/pull/new/apache-geode-${VERSION} and submit the pull request" -echo "3. Go to https://github.com/${GITHUB_USER}/geode/pull/new/add-${VERSION}-to-old-versions and create the pull request" -echo "4. Validate docker image: docker run -it apachegeode/geode" -echo "5. Bulk-transition JIRA issues fixed in this release to Closed" -echo "5b.Publish to GitHub (see https://cwiki.apache.org/confluence/display/GEODE/Releasing+Apache+Geode#ReleasingApacheGeode-PublishtoGitHub)" -echo "6. Wait overnight for apache mirror sites to sync" -echo "7. Confirm that your homebrew PR passed its PR checks and was merged to master" -echo "8. Check that ${VERSION} documentation has been published to https://geode.apache.org/docs/" -[ -z "$DID_REMOVE" ] || DID_REMOVE=" and ${DID_REMOVE} info has been removed" -echo "9. Check that ${VERSION} download info has been published to https://geode.apache.org/releases/${DID_REMOVE}" -MAJOR="${VERSION_MM%.*}" -MINOR="${VERSION_MM#*.}" -PATCH="${VERSION##*.}" -[ "${PATCH}" -ne 0 ] || echo "10. Ask on the dev list for a volunteer to begin the chore of updating 3rd-party dependency versions on develop (see dev-tools/dependencies/README.md)" -M=$(date --date '+9 months' '+%a, %B %d %Y' 2>/dev/null || date -v +9m "+%a, %B %d %Y" 2>/dev/null || echo "9 months from now") -[ "${PATCH}" -ne 0 ] || echo "11. Mark your calendar for $M (assuming we release Geode ${MAJOR}.$((MINOR + 3)) on that day) to run ${0%/*}/end_of_support.sh -v ${VERSION_MM}" -[ "${PATCH}" -ne 0 ] || echo "12. Log in to https://hub.docker.com/repository/docker/apachegeode/geode and update the latest Dockerfile linktext and url to ${VERSION_MM}" -echo "Bump support pipeline to ${VERSION_MM}.$(( PATCH + 1 )) by plussing BumpPatch in https://concourse.apachegeode-ci.info/teams/main/pipelines/apache-support-${VERSION_MM//./-}-main?group=Semver%20Management" -echo "Run ${0%/*}/set_versions.sh -v ${VERSION_MM}.$(( PATCH + 1 )) -s" -echo 'Finally, send announce email!' diff --git a/dev-tools/release/set_copyright.sh b/dev-tools/release/set_copyright.sh deleted file mode 100755 index db52a24..0000000 --- a/dev-tools/release/set_copyright.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/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. - -set -e - -usage() { - echo "Usage: set_copyright.sh dirs" - exit 1 -} - -if [[ "$1" == "" ]] ; then - usage -fi - -function failMsg { - errln=$1 - echo "ERROR: set_copyright script did NOT complete successfully" - echo "Comment out any steps that already succeeded (approximately lines 37-$(( errln - 1 ))) and try again" -} -trap 'failMsg $LINENO' ERR - - -echo "" -echo "============================================================" -echo "Checking Copyright NOTICE and updating year if necessary" -echo "============================================================" -set -x -year=$(date +%Y) -for DIR in $@ ; do - cd ${DIR} - sed \ - -e "2s/ \(20[0-9][0-9]\) / \1-${year} /" \ - -e "2s/-20[0-9][0-9] /-${year} /" \ - -e "2s/${year}-${year}/${year}/" \ - -i.bak NOTICE - rm -f NOTICE.bak - git add NOTICE - if [ $(git diff --staged | wc -l) -gt 0 ] ; then - git diff --staged --color | cat - git commit -a -m "Bumping copyright year to ${year}" - fi -done -set +x diff --git a/dev-tools/release/set_versions.sh b/dev-tools/release/set_versions.sh deleted file mode 100755 index 52991c7..0000000 --- a/dev-tools/release/set_versions.sh +++ /dev/null @@ -1,176 +0,0 @@ -#!/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. - -set -e - -usage() { - echo "Usage: set_versions.sh -v version_number [-s]" - echo " -v The #.#.# version number for the next release" - echo " -s configure examples to use latest snapshot instead of release" - exit 1 -} - -FULL_VERSION="" - - -while getopts ":v:snw:" opt; do - case ${opt} in - v ) - VERSION=$OPTARG - ;; - s ) - EXAMPLES_USE_SNAPSHOTS=true - ;; - n ) - NOPUSH=true - ;; - w ) - WORKSPACE="$OPTARG" - CLEAN=false - ;; - \? ) - usage - ;; - esac -done - -if [[ ${VERSION} == "" ]] ; then - usage -fi - -if ! [[ $VERSION =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - echo "Malformed version number ${VERSION}. Example valid version: 1.9.0" - exit 1 -fi - -BUILDSUFFIX="-build.0" -VERSION_MM=${VERSION%.*} - -if [ "${EXAMPLES_USE_SNAPSHOTS}" = "true" ] ; then - GEODEFOREXAMPLES="${VERSION_MM}.+" -else - GEODEFOREXAMPLES="${VERSION}" -fi - -set -x -[ -n "${WORKSPACE}" ] || WORKSPACE=$PWD/release-${VERSION}-workspace -GEODE=$WORKSPACE/geode -GEODE_EXAMPLES=$WORKSPACE/geode-examples -set +x - - -function failMsg1 { - echo "ERROR: set_versions script did NOT complete successfully. Please try again." -} -trap failMsg1 ERR - - -if [ "${CLEAN}" != "false" ] ; then - echo "" - echo "============================================================" - echo "Cleaning workspace directory..." - echo "============================================================" - set -x - rm -rf $WORKSPACE - mkdir -p $WORKSPACE - cd $WORKSPACE - set +x - - - echo "" - echo "============================================================" - echo "Cloning repositories..." - echo "============================================================" - set -x - git clone --single-branch --branch support/${VERSION_MM} g...@github.com:apache/geode.git - git clone --single-branch --branch support/${VERSION_MM} g...@github.com:apache/geode-examples.git - set +x -fi - - -function failMsg2 { - errln=$1 - echo "ERROR: set_versions script did NOT complete successfully" - echo "Comment out any steps that already succeeded (approximately lines 76-$(( errln - 1 ))) and try again" -} -trap 'failMsg2 $LINENO' ERR - - -echo "" -echo "============================================================" -echo "Setting Geode versions" -echo "============================================================" -set -x -cd ${GEODE} -set +x - -#version = 1.13.0-build.0 -sed -e "s/^version =.*/version = ${VERSION}${BUILDSUFFIX}/" -i.bak gradle.properties - -# product_version: '1.13.2' -sed -E \ - -e "s#product_version: '[0-9.]+'#product_version: '${VERSION}'#" \ - -i.bak geode-book/config.yml - -#git clone -b branch --depth 1 https://github.com/apache/geode.git geode -sed -e "s#clone -b [ds][evlopurt/0-9.]*#clone -b support/${VERSION_MM}#" \ - -i.bak \ - ci/docker/cache_dependencies.sh \ - ci/images/google-geode-builder/scripts/cache_dependencies.sh - -rm -f gradle.properties.bak geode-book/config.yml.bak ci/docker/cache_dependencies.sh.bak ci/images/google-geode-builder/scripts/cache_dependencies.sh.bak -set -x -git add gradle.properties geode-book/config.yml -if [ $(git diff --staged | wc -l) -gt 0 ] ; then - git diff --staged --color | cat - git commit -m "Bumping version to ${VERSION}${BUILDSUFFIX}" - [ "$NOPUSH" = "true" ] || git push -u origin -fi -set +x - - -echo "" -echo "============================================================" -echo "Setting geode-examples version" -echo "============================================================" -set -x -cd ${GEODE_EXAMPLES} -git pull -set +x - -#version = 1.12.0-build.0 -#geodeVersion = 1.12.+ -sed -e "s/^version = .*/version = ${VERSION}${BUILDSUFFIX}/" \ - -e "s/^geodeVersion = .*/geodeVersion = ${GEODEFOREXAMPLES}/" \ - -i.bak gradle.properties - -rm gradle.properties.bak -set -x -git add . -if [ $(git diff --staged | wc -l) -gt 0 ] ; then - git diff --staged --color | cat - git commit -m "Bumping version to ${VERSION}${BUILDSUFFIX}" - [ "$NOPUSH" = "true" ] || git push -u origin -fi -set +x - - -echo "" -echo "============================================================" -echo 'Done setting support versions!' -echo "============================================================" -cd ${GEODE}/../..