This is an automated email from the ASF dual-hosted git repository.
sblackmon pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/streams.git
The following commit(s) were added to refs/heads/master by this push:
new 0e3006afc5 #547 improve release script
0e3006afc5 is described below
commit 0e3006afc53954166bf96df2be8230ec0bab74f1
Author: sblackmon <[email protected]>
AuthorDate: Fri Jan 19 13:57:13 2024 -0600
#547 improve release script
---
release.sh | 115 ++++++++++++++++++++-------
src/site/markdown/processes/release-steps.md | 2 +-
2 files changed, 88 insertions(+), 29 deletions(-)
diff --git a/release.sh b/release.sh
index 1cdcf618aa..8a520ebe45 100755
--- a/release.sh
+++ b/release.sh
@@ -16,19 +16,57 @@
# limitations under the License.
#
-REL=$1
-DEV=$2
-REPO="-Dmaven.repo.local=/tmp/streams_release"
-
-if [[ -z "$REL" || -z "$DEV" ]]; then
- echo "You must specify a release and new dev version"
- echo "Useage: ./release.sh <new_version> <new_dev_version>"
- echo "Example: ./release.sh 0.5.1 0.6.0-SNAPSHOT"
- exit 1
+usage() {
+echo "Usage: $0 "
+echo "[-v RELEASE_VERSION (required) (e.g. 1.0.0)]"
+echo "[-d DEVELOPMENT_VERSION (required) (e.g. 1.0.1)]"
+echo "[-r RELEASE_CANDIDATE (default: 1)]"
+1>&2; exit 1;
+}
+
+while getopts ":v:d:r:" OPTION; do
+ case $OPTION in
+ v) export RELEASE_VERSION=${OPTARG};;
+ d) export DEVELOPMENT_VERSION=${OPTARG};;
+ r) export RELEASE_CANDIDATE=${OPTARG};;
+ \?) usage; exit 1;;
+ esac
+done
+
+if [ -z "${RELEASE_VERSION}" ]; then
+ echo "RELEASE_VERSION (-v) is not set!";
+ usage
+ exit 1;
+fi
+if [ -z "${DEVELOPMENT_VERSION}" ]; then
+ echo "DEVELOPMENT_VERSION (-d) is not set!";
+ exit 1;
+fi
+if [ -z "${RELEASE_CANDIDATE}" ]; then
+ echo "RELEASE_CANDIDATE (-r) is not set";
+ echo "Using default value '1'";
+ exit 1;
fi
-mkdir -p /tmp/streams_release
-mkdir -p logs
+if [ -z `which docker` ]; then
+ echo "docker is not configured!";
+ exit 1;
+fi
+if [ -z `which gpg` ]; then
+ echo "gpg is not configured!";
+ exit 1;
+fi
+if [ -z `which mvn` ]; then
+ echo "mvn is not configured!";
+ exit 1;
+fi
+
+mkdir -p /tmp/streams_release_repository
+rm -rf /tmp/streams_release_repository/*
+mkdir -p /tmp/streams_release_source
+rm -rf /tmp/streams_release_source/*
+mkdir -p /tmp/streams_release_logs
+rm -rf /tmp/streams_release_logs/*
printInfo() {
echo "\n"
@@ -45,33 +83,54 @@ printInfo() {
checkStatus() {
local output=$1
if [[ -z "$(tail $output | egrep 'BUILD SUCCESS')" ]]; then
- echo "Release failed"
- exit 1
+ echo "Release failed!"
+ echo "Check $output for more details."
+ exit 1;
fi
}
#streams
-git clone https://github.com/apache/streams.git ./streams-$REL
-cd streams-$REL
+git clone https://github.com/apache/streams.git /tmp/streams_release_source
+cd /tmp/streams_release_source
printInfo
-mvn -Pcheck apache-rat:check -e -DskipTests=true
-Drat.excludeSubprojects=false $REPO > ../logs/streams_ratcheck.txt
-checkStatus ../logs/streams_ratcheck.txt
-
-mvn clean test $REPO > ../logs/streams_unittests.txt
-checkStatus ../logs/streams_unittests.txt
-
-mvn -Papache-release $REPO release:prepare -DpushChanges=false
-DautoVersionSubmodules=true -DreleaseVersion=$REL
-DdevelopmentVersion=$DEV-SNAPSHOT -Dtag=streams-project-$REL >
../logs/streams_release-prepare.txt
-checkStatus ../logs/streams_release-prepare.txt
-
-mvn -Papache-release $REPO clean install release:perform
-Darguments='-Dmaven.test.skip.exec=true' -Dgoals=deploy -DlocalRepoDirectory=.
-DlocalCheckout=true > ../logs/streams_release-perform.txt
-checkStatus ../logs/streams_release-perform.txt
+set -x
+
+mvn -Pcheck \
+ apache-rat:check \
+ -Drat.excludeSubprojects=false \
+ -e -DskipTests=true \
+ | tee /tmp/streams_release_logs/streams_ratcheck.txt
+checkStatus /tmp/streams_release_logs/streams_ratcheck.txt
+
+mvn clean test \
+ | tee /tmp/streams_release_logs/streams_unittests.txt
+checkStatus /tmp/streams_release_logs/streams_unittests.txt
+
+mvn -Papache-release \
+ release:prepare \
+ -DpushChanges=false \
+ -DautoVersionSubmodules=true \
+ -DreleaseVersion=${RELEASE_VERSION} \
+ -DdevelopmentVersion=${DEVELOPMENT_VERSION}-SNAPSHOT \
+ -Dtag=apache-streams-${RELEASE_VERSION}-rc${RELEASE_CANDIDATE} \
+ | tee /tmp/streams_release_logs/streams_release-prepare.txt
+checkStatus /tmp/streams_release_logs/streams_release-prepare.txt
+
+mvn -Papache-release \
+ clean install release:perform \
+ -Darguments='-Dmaven.test.skip.exec=true' \
+ -Dgoals=deploy \
+ -DlocalRepoDirectory=. \
+ -DlocalCheckout=true \
+ | tee /tmp/streams_release_logs/streams_release-perform.txt
+checkStatus /tmp/streams_release_logs/streams_release-perform.txt
git push origin master
-git push origin streams-project-$REL
+git push origin apache-streams-$REL
-cd..
+cd -
cat << EOM
##################################################################
diff --git a/src/site/markdown/processes/release-steps.md
b/src/site/markdown/processes/release-steps.md
index 1ea1bca967..4e33b79521 100644
--- a/src/site/markdown/processes/release-steps.md
+++ b/src/site/markdown/processes/release-steps.md
@@ -43,7 +43,7 @@ To perform a release manually, or to better understand what's
going on, read the
4. Verify the source has the required license headers before trying to release:
- mvn -Papache-release clean apache-rat:check -e -DskipTests
+ mvn -Pcheck -Papache-release clean apache-rat:check -e -DskipTests
5. Do a dry run of the release:prepare step: