This is an automated email from the ASF dual-hosted git repository.
frankgh pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra-builds.git
The following commit(s) were added to refs/heads/trunk by this push:
new 12213f8 CASSSIDECAR-233: Build scripts for the Sidecar release
12213f8 is described below
commit 12213f826187279b566462f380999fc0071ae5f7
Author: Francisco Guerrero <[email protected]>
AuthorDate: Mon Feb 17 17:12:05 2025 -0800
CASSSIDECAR-233: Build scripts for the Sidecar release
Patch by Francisco Guerrero; reviewed by Mick Semb Wever for CASSSIDECAR-233
---
cassandra-release/finish_release.sh | 6 +-
cassandra-release/prepare_release.sh | 8 +-
cassandra-sidecar-release/README.md | 5 +
.../finish_release.sh | 115 +++---
cassandra-sidecar-release/prepare_release.sh | 433 +++++++++++++++++++++
5 files changed, 509 insertions(+), 58 deletions(-)
diff --git a/cassandra-release/finish_release.sh
b/cassandra-release/finish_release.sh
index 7a777d2..406163b 100755
--- a/cassandra-release/finish_release.sh
+++ b/cassandra-release/finish_release.sh
@@ -2,7 +2,11 @@
##### TO EDIT #####
-asf_username="$USER"
+asf_username="${asf_username:-$USER}"
+
+if [ "x${asf_username}" != "x${USER}" ] ; then
+ echo "Using ASF username ${asf_username}"
+fi
if [ -z "$ARTIFACTORY_API_KEY" ]; then
ARTIFACTORY_API_KEY="XXXXXXXX"
diff --git a/cassandra-release/prepare_release.sh
b/cassandra-release/prepare_release.sh
index 923025a..5b5b223 100755
--- a/cassandra-release/prepare_release.sh
+++ b/cassandra-release/prepare_release.sh
@@ -2,14 +2,18 @@
##### TO EDIT #####
-asf_username="$USER"
+asf_username="${asf_username:-$USER}"
+
+if [ "x${asf_username}" != "x${USER}" ] ; then
+ echo "Using ASF username ${asf_username}"
+fi
if [ -z "$gpg_key" ]; then
gpg_key="XXXXXXXX"
fi
if [ "$gpg_key" = "XXXXXXXX" ]; then
- echo >&2 "Gpg key is unset. Pleae set gpg_key variable." && exit 1
+ echo >&2 "Gpg key is unset. Please set gpg_key variable." && exit 1
fi
# The name of remote for the asf remote in your git repo
diff --git a/cassandra-sidecar-release/README.md
b/cassandra-sidecar-release/README.md
new file mode 100644
index 0000000..faf4d5f
--- /dev/null
+++ b/cassandra-sidecar-release/README.md
@@ -0,0 +1,5 @@
+Cassandra Sidecar release scripts
+=========================
+
+For release managers of cassandra. See
http://cassandra.apache.org/doc/latest/development/release_process.html
+
diff --git a/cassandra-release/finish_release.sh
b/cassandra-sidecar-release/finish_release.sh
similarity index 58%
copy from cassandra-release/finish_release.sh
copy to cassandra-sidecar-release/finish_release.sh
index 7a777d2..44a0018 100755
--- a/cassandra-release/finish_release.sh
+++ b/cassandra-sidecar-release/finish_release.sh
@@ -2,18 +2,20 @@
##### TO EDIT #####
-asf_username="$USER"
+asf_username="${asf_username:-$USER}"
-if [ -z "$ARTIFACTORY_API_KEY" ]; then
- ARTIFACTORY_API_KEY="XXXXXXXX"
-fi
+ARTIFACTORY_API_KEY="${ARTIFACTORY_API_KEY:-XXXXXXXX}"
-if [ "$ARTIFACTORY_API_KEY" = "XXXXXXXX" ]; then
+if [ "x$ARTIFACTORY_API_KEY" = "xXXXXXXXX" ]; then
exit -e "Get your jfrog artifactory API Key from
https://apache.jfrog.io/ui/admin/artifactory/user_profile and set
ARTIFACTORY_API_KEY to it"
fi
# The name of remote for the asf remote in your git repo
-git_asf_remote="origin"
+git_asf_remote="${git_asf_remote:-origin}"
+
+if [ "x${git_asf_remote}" != "xorigin" ] ; then
+ echo "Using git ASF remote ${git_asf_remote}"
+fi
mail_dir="$HOME/Mail"
@@ -24,7 +26,11 @@ command -v git >/dev/null 2>&1 || { echo >&2 "git needs to
be installed"; exit 1
###################
-asf_git_repo="[email protected]:apache/cassandra.git"
+asf_git_repo="${asf_git_repo:[email protected]:apache/cassandra-sidecar.git}"
+
+if [ "x${asf_git_repo}" != "[email protected]:apache/cassandra-sidecar.git" ] ;
then
+ echo "Using ASF git repo ${asf_git_repo}"
+fi
# Reset getopts in case it has been used previously in the shell.
OPTIND=1
@@ -43,7 +49,7 @@ show_help()
echo " -v: verbose mode (show everything that is going on)"
echo " -f: fake mode, print any output but don't do anything (for
debugging)"
echo ""
- echo "Example: $name 2.0.3"
+ echo "Example: $name 1.0.0"
}
while getopts ":hvf" opt; do
@@ -89,15 +95,15 @@ git log -1 &> /dev/null
if [ $? -ne 0 ]
then
echo "The current directory does not appear to be a git repository."
- echo "You must run this from the Cassandra git source repository."
+ echo "You must run this from the Cassandra Sidecar git source repository."
exit 1
fi
if [ "$release" == "$deb_release" ]
then
- echo "Publishing release $release"
+ echo "Publishing Sidecar release $release"
else
- echo "Publishing release $release (debian uses $deb_release)"
+ echo "Publishing Sidecar release $release (debian uses $deb_release)"
fi
# "Saves" stdout to other descriptor since we might redirect them below
@@ -105,7 +111,7 @@ exec 3>&1 4>&2
if [ $verbose -eq 0 ]
then
- # Not verbose, redirect all ouptut to a logfile
+ # Not verbose, redirect all output to a logfile
logfile="release-${release}.log"
[ ! -e "$logfile" ] || rm $logfile
touch $logfile
@@ -130,7 +136,7 @@ echo "Deploying artifacts ..." 1>&3 2>&4
cassandra_dir=$PWD
#
-# Rename the git tag, removing the -tenative suffix
+# Rename the git tag, removing the -tentative suffix
#
execute "cd $cassandra_dir"
@@ -138,11 +144,11 @@ execute "cd $cassandra_dir"
echo "Tagging release ..." 1>&3 2>&4
execute "git checkout $release-tentative"
-# Ugly but somehow 'execute "git tag -a cassandra-$release -m 'Apache
Cassandra $release release' "' doesn't work
-echo "Apache Cassandra $release release" > "_tmp_msg_"
-execute "git tag -a cassandra-$release -F _tmp_msg_"
+# Ugly but somehow 'execute "git tag -a cassandra-sidecar-$release -m 'Apache
Cassandra $release release' "' doesn't work
+echo "Apache Cassandra Sidecar $release release" > "_tmp_msg_"
+execute "git tag -a cassandra-sidecar-$release -F _tmp_msg_"
rm _tmp_msg_
-execute "git push $git_asf_remote refs/tags/cassandra-$release"
+execute "git push $git_asf_remote refs/tags/cassandra-sidecar-$release"
execute "git tag -d $release-tentative"
execute "git push $git_asf_remote :refs/tags/$release-tentative"
@@ -152,8 +158,8 @@ execute "git push $git_asf_remote
:refs/tags/$release-tentative"
tmp_dir=`mktemp -d`
cd $tmp_dir
-echo "Apache Cassandra $release release" > "_tmp_msg_"
-execute "svn mv -F _tmp_msg_
https://dist.apache.org/repos/dist/dev/cassandra/$release
https://dist.apache.org/repos/dist/release/cassandra/"
+echo "Apache Cassandra Sidecar $release release" > "_tmp_msg_"
+execute "svn mv -F _tmp_msg_
https://dist.apache.org/repos/dist/dev/cassandra/cassandra-sidecar/${release}
https://dist.apache.org/repos/dist/release/cassandra/cassandra-sidecar/"
rm _tmp_msg_
#
@@ -179,7 +185,7 @@ echo "Deploying debian packages ..." 1>&3 2>&4
# Upload to ASF jfrog artifactory
debian_dist_dir=$tmp_dir/cassandra-dist-$release-debian
-execute "svn co
https://dist.apache.org/repos/dist/release/cassandra/$release/debian
$debian_dist_dir"
+execute "svn co
https://dist.apache.org/repos/dist/release/cassandra/cassandra-sidecar/$release/debian
$debian_dist_dir"
[ -e "$debian_dist_dir" ] || mkdir $debian_dist_dir # create it for fake mode,
to satisfy `find …` command below
execute "cd $debian_dist_dir"
@@ -187,20 +193,21 @@ ROOTLEN=$(( ${#debian_dist_dir} + 1))
for i in $(find ${debian_dist_dir}/ -mindepth 2 -type f -mtime -10 -not -path
"*/.svn/*" -printf "%T@ %p\n" | sort -n -r | cut -d' ' -f 2); do
IFILE=`echo $(basename -- "$i") | cut -c 1`
+ echo $IFILE
if [[ $IFILE != "." ]];
then
- FDIR=`echo $i | cut -c ${ROOTLEN}-${#i}`
- echo "Uploading $FDIR"
- execute "curl -X PUT -T $i -u${asf_username}:${ARTIFACTORY_API_KEY}
https://apache.jfrog.io/artifactory/cassandra/${FDIR}?override=1"
- execute "curl -X PUT -T $i -u${asf_username}:${ARTIFACTORY_API_KEY}
https://apache.jfrog.io/artifactory/cassandra-deb/${FDIR}?override=1"
- sleep 1
+ FDIR=`echo $i | cut -c ${ROOTLEN}-${#i}`
+ echo "Uploading $FDIR"
+ execute "curl -X PUT -T $i -u${asf_username}:${ARTIFACTORY_API_KEY}
https://apache.jfrog.io/artifactory/cassandra/cassandra-sidecar/${FDIR}?override=1"
+ execute "curl -X PUT -T $i -u${asf_username}:${ARTIFACTORY_API_KEY}
https://apache.jfrog.io/artifactory/cassandra-deb/cassandra-sidecar/${FDIR}?override=1"
+ sleep 1
fi
done
cd $tmp_dir
# Remove dist debian directory. Official download location is
https://debian.cassandra.apache.org
-echo "Apache Cassandra $release debian artifacts" > "_tmp_msg_"
-execute "svn rm -F _tmp_msg_
https://dist.apache.org/repos/dist/release/cassandra/$release/debian"
+echo "Apache Cassandra Sidecar $release debian artifacts" > "_tmp_msg_"
+execute "svn rm -F _tmp_msg_
https://dist.apache.org/repos/dist/release/cassandra/cassandra-sidecar/$release/debian"
#
# Public deploy the RedHat packages
@@ -210,7 +217,7 @@ echo "Deploying redhat packages ..." 1>&3 2>&4
# Upload to ASF jfrog artifactory
redhat_dist_dir=$tmp_dir/cassandra-dist-$release-redhat
-execute "svn co
https://dist.apache.org/repos/dist/release/cassandra/$release/redhat
$redhat_dist_dir"
+execute "svn co
https://dist.apache.org/repos/dist/release/cassandra/cassandra-sidecar/$release/redhat
$redhat_dist_dir"
[ -e "$redhat_dist_dir" ] || mkdir $redhat_dist_dir # create it for fake mode,
to satisfy `find …` command below
execute "cd $redhat_dist_dir"
@@ -222,15 +229,15 @@ for i in $(find ${redhat_dist_dir} -mindepth 1 -type f
-mtime -10 -not -path "*/
then
FDIR=`echo $i | cut -c ${ROOTLEN}-${#i}`
echo "Uploading $FDIR"
- execute "curl -X PUT -T $i -u${asf_username}:${ARTIFACTORY_API_KEY}
https://apache.jfrog.io/artifactory/cassandra-rpm/${repo_series}/${FDIR}?override=1"
+ execute "curl -X PUT -T $i -u${asf_username}:${ARTIFACTORY_API_KEY}
https://apache.jfrog.io/artifactory/cassandra-rpm/cassandra-sidecar/${repo_series}/${FDIR}?override=1"
sleep 1
fi
done
cd $tmp_dir
# Remove dist redhat directory. Official download location is
https://redhat.cassandra.apache.org
-echo "Apache Cassandra $release redhat artifacts" > "_tmp_msg_"
-execute "svn rm -F _tmp_msg_
https://dist.apache.org/repos/dist/release/cassandra/$release/redhat"
+echo "Apache Cassandra Sidecar $release redhat artifacts" > "_tmp_msg_"
+execute "svn rm -F _tmp_msg_
https://dist.apache.org/repos/dist/release/cassandra/cassandra-sidecar/$release/redhat"
# Cleaning up
execute "cd $cassandra_dir"
@@ -242,42 +249,40 @@ rm -rf $tmp_dir
mail_file="$mail_dir/mail_release_$release"
[ ! -e "$mail_file" ] || rm $mail_file
-echo "[RELEASE] Apache Cassandra $release released" > $mail_file
+echo "[RELEASE] Apache Cassandra Sidecar $release released" > $mail_file
+echo "" >> $mail_file
+echo "The Cassandra team is pleased to announce the release of Apache Sidecar
Cassandra version $release." >> $mail_file
+echo "" >> $mail_file
+echo "" >> $mail_file
+echo "Downloads of source and binary distributions are available here:" >>
$mail_file
+echo "" >> $mail_file
+echo " https://dlcdn.apache.org/cassandra/cassandra-sidecar/$release/" >>
$mail_file
echo "" >> $mail_file
-echo "The Cassandra team is pleased to announce the release of Apache
Cassandra version $release." >> $mail_file
echo "" >> $mail_file
-echo "Apache Cassandra is a fully distributed database. It is the right choice
when you need scalability and high availability without compromising
performance." >> $mail_file
+echo "The Maven artifacts can be found at: " >> $mail_file
echo "" >> $mail_file
-echo " http://cassandra.apache.org/" >> $mail_file
+echo " https://repo.maven.apache.org/maven2/org/apache/cassandra/" >>
$mail_file
echo "" >> $mail_file
-echo "Downloads of source and binary distributions are listed in our download
section:" >> $mail_file
+echo "These will be mirrored to other repositories." >> $mail_file
echo "" >> $mail_file
-echo " http://cassandra.apache.org/download/" >> $mail_file
echo "" >> $mail_file
-series="${release_major}.${release_minor}"
-echo "This version is a bug fix release[1] on the $series series. As always,
please pay attention to the release notes[2] and Let us know[3] if you were to
encounter any problem." >> $mail_file
+echo "As always, please review the changes[1] and pay attention to the release
notes[2]. Let us know[3] if you were to encounter any problem." >> $mail_file
echo "" >> $mail_file
-series="${release_major}.${release_minor}"
-echo "[WARNING] Debian and RedHat package repositories have moved! Debian
/etc/apt/sources.list.d/cassandra.sources.list and RedHat
/etc/yum.repos.d/cassandra.repo files must be updated to the new repository
URLs. For Debian it is now https://debian.cassandra.apache.org . For RedHat it
is now https://redhat.cassandra.apache.org/${repo_series}/ ." >> $mail_file
echo "" >> $mail_file
-echo "Enjoy!" >> $mail_file
+echo 'Enjoy!' >> $mail_file
echo "" >> $mail_file
-echo "[1]: CHANGES.txt
https://github.com/apache/cassandra/blob/cassandra-$release/CHANGES.txt" >>
$mail_file
-echo "[2]: NEWS.txt
https://github.com/apache/cassandra/blob/cassandra-$release/NEWS.txt" >>
$mail_file
-echo "[3]: https://issues.apache.org/jira/browse/CASSANDRA" >> $mail_file
+echo "[1]: CHANGES.txt
https://github.com/apache/cassandra-sidecar/blob/cassandra-sidecar-$release/CHANGES.txt"
>> $mail_file
+echo "[2]: NEWS.txt
https://github.com/apache/cassandra-sidecar/blob/cassandra-sidecar-$release/NEWS.txt"
>> $mail_file
+echo "[3]: https://issues.apache.org/jira/browse/CASSSIDECAR" >> $mail_file
echo 'Done deploying artifacts. Please make sure to:'
echo ' 1) "Release" the staging repository from repository.apache.org'
echo ' 2) wait for the artifacts to sync at
https://downloads.apache.org/cassandra/'
echo ' 3) update the website (TODO provide link)' # TODO - this is old info
and needs updating..
-echo ' 4) update CQL doc if appropriate'
-echo ' 5) update wikipedia page if appropriate (
https://en.wikipedia.org/wiki/Apache_Cassandra )'
-echo " 6) send announcement email: draft in $mail_file"
-echo ' 7) update #cassandra topic on slack'
-echo ' 8) tweet from @cassandra'
-echo ' 9) release version in JIRA'
-echo ' 10) remove old version (eg: `svn rm
https://dist.apache.org/repos/dist/release/cassandra/<previous_version>`)'
-echo ' 11) increment build.xml (base.version), CHANGES.txt, and
ubuntu2004_test.docker (ccm installed) for the next release'
-echo ' 12) Add release in
https://reporter.apache.org/addrelease.html?cassandra (same as instructions in
email you will receive from the \"Apache Reporter Service\")'
-echo ' 13) update current_ version in
cassandra-dtest/upgrade_tests/upgrade_manifest.py'
+echo " 4) send announcement email: draft in $mail_file"
+echo ' 5) tweet from @cassandra'
+echo ' 6) release version in JIRA'
+echo ' 7) remove old version (eg: `svn rm
https://dist.apache.org/repos/dist/release/cassandra/cassandra-sidecar/<previous_version>`)'
+echo ' 8) increment gradle.properties (version) and CHANGES.txt'
+echo ' 9) Add release in
https://reporter.apache.org/addrelease.html?cassandra-sidecar (same as
instructions in email you will receive from the \"Apache Reporter Service\")'
diff --git a/cassandra-sidecar-release/prepare_release.sh
b/cassandra-sidecar-release/prepare_release.sh
new file mode 100755
index 0000000..9656714
--- /dev/null
+++ b/cassandra-sidecar-release/prepare_release.sh
@@ -0,0 +1,433 @@
+#!/bin/bash
+
+#set -o xtrace
+
+##### BEFORE YOU BEGIN #####
+
+# 1. Ensure your gpg configuration in ~/.gradle/gradle.properties
+# For example:
+# signing.gnupg.keyName=<your-key>
+# signing.gnupg.passphrase=<your-passphrase>
+# #signing.gnupg.executable=gpg # optional
+# #signing.gnupg.useLegacyGpg=true # optional
+# #signing.gnupg.homeDir=gnupg-home # optional
+# #signing.gnupg.optionsFile=gnupg-home/gpg.conf # optional
+
+# 2. Ensure your maven credentials are configured in
~/.gradle/gradle.properties
+# For example:
+#
maven.repository.url=https://repository.apache.org/service/local/staging/deploy/maven2
+# maven.username=<asf-username>
+# maven.password=<asf-password>
+
+##### TO EDIT #####
+
+asf_username="${asf_username:-$USER}"
+
+if [ "x${asf_username}" != "x${USER}" ] ; then
+ echo "Using ASF username ${asf_username}"
+fi
+
+# The name of remote for the asf remote in your git repo
+git_asf_remote="${git_asf_remote:-origin}"
+
+if [ "x${git_asf_remote}" != "xorigin" ] ; then
+ echo "Using git ASF remote ${git_asf_remote}"
+fi
+
+# Where you want to put the mail draft that this script generate
+mail_dir="$HOME/Mail"
+
+###################
+# prerequisites
+
+command -v svn >/dev/null 2>&1 || { echo >&2 "subversion needs to be
installed"; exit 1; }
+command -v git >/dev/null 2>&1 || { echo >&2 "git needs to be installed"; exit
1; }
+command -v shasum >/dev/null 2>&1 || { echo >&2 "shasum needs to be
installed"; exit 1; }
+
+###################
+asf_git_repo="${asf_git_repo:-https://gitbox.apache.org/repos/asf}"
+
+if [ "x${asf_git_repo}" != "xhttps://gitbox.apache.org/repos/asf" ] ; then
+ echo "Using ASF git repo ${asf_git_repo}"
+fi
+
+staging_repo="https://repository.apache.org/content/repositories"
+
+# Reset getopts in case it has been used previously in the shell.
+OPTIND=1
+
+# Initialize our own variables:
+verbose=0
+fake_mode=0
+only_deb=0
+only_rpm=0
+
+show_help()
+{
+ local name=`basename $0`
+ echo "$name [options] <release_version> <java_8_home> <java_11_home>"
+ echo ""
+ echo "where [options] are:"
+ echo " -h: print this help"
+ echo " -v: verbose mode (show everything that is going on)"
+ echo " -f: fake mode, print any output but don't do anything (for
debugging)"
+ echo " -d: only publish the debian package"
+ echo " -r: only publish the rpm package"
+ echo ""
+ echo "Example: $name 1.0.0 /path/to/java8/home /path/to/java11/home"
+}
+
+while getopts ":hvfdr" opt; do
+ case "$opt" in
+ h)
+ show_help
+ exit 0
+ ;;
+ v) verbose=1
+ ;;
+ f) fake_mode=1
+ ;;
+ d) only_deb=1
+ ;;
+ r) only_rpm=1
+ ;;
+ \?)
+ echo "Invalid option: -$OPTARG" >&2
+ show_help
+ exit 1
+ ;;
+ esac
+done
+
+if [ $only_deb -eq 1 ] && [ $only_rpm -eq 1 ]
+then
+ echo "Options '-d' and '-r' are mutually exclusive"
+ exit 1
+fi
+
+shift $(($OPTIND-1))
+
+release=$1
+deb_release=${release/-/\~}
+
+if [ -z "$release" ]
+then
+ echo "Missing argument <release_version>"
+ show_help
+ exit 1
+fi
+
+shift
+
+java_8_home=$1
+
+if [ -z "$java_8_home" ]
+then
+ echo "Missing argument <java_8_home>"
+ show_help
+ exit 1
+fi
+
+shift
+
+java_11_home=$1
+
+if [ -z "$java_11_home" ]
+then
+ echo "Missing argument <java_11_home>"
+ show_help
+ exit 1
+fi
+
+if [ -x "${java_8_home}/bin/java" ]
+then
+ if [ "x$(${java_8_home}/bin/java -version 2>&1 | awk -F '"' '/version/
{print $2}' | cut -d '.' -f 1,2)" != "x1.8" ]
+ then
+ echo "Invalid java 8 version in ${java_8_home}"
+ show_help
+ exit 1
+ fi
+else
+ echo "Invalid java_8_home argument. No java executable found"
+ show_help
+ exit 1
+fi
+
+if [ -x "${java_11_home}/bin/java" ]
+then
+ if [ "x$(${java_11_home}/bin/java -version 2>&1 | awk -F '"' '/version/
{print $2}' | cut -d '.' -f 1)" != "x11" ]
+ then
+ echo "Invalid java 11 version in ${java_11_home}"
+ show_help
+ exit 1
+ fi
+else
+ echo "Invalid java_11_home argument. No java executable found"
+ show_help
+ exit 1
+fi
+
+if [ "$#" -gt 1 ]
+then
+ shift
+ echo "Too many arguments. Don't know what to do with '$@'"
+ show_help
+ exit 1
+fi
+
+# Somewhat lame way to check we're in a git repo but that will do
+git log -1 &> /dev/null
+if [ $? -ne 0 ]
+then
+ echo "The current directory does not appear to be a git repository."
+ echo "You must run this from the Cassandra Sidecar git source repository."
+ exit 1
+fi
+
+if ! git diff-index --quiet HEAD --
+then
+ echo "This git Cassandra Sidecar directory has uncommitted changes."
+ echo "You must run this from a clean Cassandra Sidecar git source
repository."
+ exit 1
+fi
+
+gradle_properties_version="$(grep ^version= gradle.properties)"
+if [ "${release}" != "${gradle_properties_version#version=}" ] ; then
+ echo "The release requested ${release} does not match gradle.properties's
version ${gradle_properties_version}"
+ exit 1
+fi
+
+if [ $only_deb -eq 0 ] && [ $only_rpm -eq 0 ]
+then
+ if curl --output /dev/null --silent --head --fail
"https://dist.apache.org/repos/dist/dev/cassandra/cassandra-sidecar/${release}"
; then
+ echo "The release candidate for ${release} is already staged at
https://dist.apache.org/repos/dist/dev/cassandra/cassandra-sidecar/${release}"
+ exit 1
+ fi
+
+ if curl --output /dev/null --silent --head --fail
"https://archive.apache.org/dist/cassandra/cassandra-sidecar/${release}" ; then
+ echo "A published release for ${release} is already public at
https://archive.apache.org/dist/cassandra/cassandra-sidecar/${release}"
+ exit 1
+ fi
+
+ if curl --output /dev/null --silent --head --fail
"https://github.com/apache/cassandra-sidecar/tree/${release}-tentative" ; then
+ echo "The release candidate tag for ${release}-tentative is already at
https://github.com/apache/cassandra-sidecar/tree/${release}-tentative"
+ exit 1
+ fi
+
+ if curl --output /dev/null --silent --head --fail
"https://github.com/apache/cassandra-sidecar/tree/cassandra-sidecar-${release}"
; then
+ echo "The published release tag for ${release} is already at
https://github.com/apache/cassandra-sidecar/tree/cassandra-sidecar-${release}"
+ exit 1
+ fi
+
+ if git tag -l | grep -q "${release}-tentative"; then
+ echo "Local git tag for ${release}-tentative already exists"
+ exit 1
+ fi
+
+ head_commit=`git log --pretty=oneline -1 | cut -d " " -f 1`
+
+ if [ "$release" == "$deb_release" ]
+ then
+ echo "Preparing release for $release from commit:"
+ else
+ echo "Preparing release for $release (debian will use $deb_release)
from commit:"
+ fi
+ echo ""
+ git show $head_commit
+ java -version
+
+ echo "Is this what you want?"
+ select yn in "Yes" "No"; do
+ case $yn in
+ Yes) break;;
+ No) echo "Alright, come back when you've made up your mind"; exit
0;;
+ esac
+ done
+fi
+
+# "Saves" stdout to other descriptor since we might redirect them below
+exec 3>&1 4>&2
+
+if [ $verbose -eq 0 ]
+then
+ # Not verbose, redirect all output to a logfile
+ logfile="vote-${release}.log"
+ [ ! -e "$logfile" ] || rm $logfile
+ touch $logfile
+ exec > $logfile
+ exec 2> $logfile
+fi
+
+execute()
+{
+ local cmd=$1
+
+ echo ">> $cmd"
+ [ $fake_mode -eq 1 ] || $cmd
+ if [ $? -ne 0 ]
+ then
+ echo "Error running $cmd" 1>&3 2>&4
+ exit $?
+ fi
+}
+
+current_dir=`pwd`
+tmp_dir=`mktemp -d`
+distributions_dir=${tmp_dir}/cassandra-sidecar/build/distributions
+
+if [ $only_deb -eq 0 ] && [ $only_rpm -eq 0 ]
+then
+ echo "Tagging release ..." 1>&3 2>&4
+ execute "git tag $release-tentative"
+ execute "git push $git_asf_remote refs/tags/$release-tentative"
+
+ echo "Cloning fresh repository ..." 1>&3 2>&4
+ execute "cd $tmp_dir"
+ ## We clone from the original repository to make extra sure we're not
screwing, even if that's definitively slower
+ execute "git clone $asf_git_repo/cassandra-sidecar.git"
+
+ echo "Building and uploading artifacts ..." 1>&3 2>&4
+ execute "cd cassandra-sidecar"
+ execute "git checkout $release-tentative"
+ # First let's build and publish java 8 artifacts
+ execute "./gradlew --no-daemon -Dorg.gradle.java.home=${java_8_home} clean"
+ execute "./gradlew --no-daemon -Dorg.gradle.java.home=${java_8_home}
-PforceSigning -Prelease=true -Pversion=${release}-jdk8 publish --stacktrace"
+ # Then build java 11 artifacts and publish
+ execute "./gradlew --no-daemon -Dorg.gradle.java.home=${java_11_home}
clean"
+ execute "./gradlew --no-daemon -PskipIntegrationTest
-Dorg.gradle.java.home=${java_11_home} -PforceSigning -Prelease=true
-Pversion=${release} assemble publish --stacktrace"
+
+ echo "Artifacts uploaded, find the staging repository on
repository.apache.org, \"Close\" it, and indicate its staging number:" 1>&3 2>&4
+ read -p "staging number Java 11? " staging_number 1>&3 2>&4
+ read -p "staging number Java 8? " staging_number_java_8 1>&3 2>&4
+
+ execute "cd $tmp_dir"
+ execute "svn co
https://dist.apache.org/repos/dist/dev/cassandra/cassandra-sidecar
cassandra-sidecar-dist-dev"
+ execute "mkdir cassandra-sidecar-dist-dev/${release}"
+ execute "cp
${distributions_dir}/apache-cassandra-sidecar-${release}-src.tar.gz*
cassandra-sidecar-dist-dev/${release}/"
+ execute "cp
${distributions_dir}/apache-cassandra-sidecar-${release}.tar.gz*
cassandra-sidecar-dist-dev/${release}/"
+ execute "svn add cassandra-sidecar-dist-dev/${release}"
+ echo "staging Cassandra Sidecar $release" > "_tmp_msg_"
+ execute "svn ci -F _tmp_msg_ cassandra-sidecar-dist-dev/${release}"
+ execute "rm _tmp_msg_"
+ execute "cd $current_dir"
+fi
+
+## Debian Stuff ##
+
+if [ $only_rpm -eq 0 ]
+then
+ execute "cd $tmp_dir"
+ execute "svn co
https://dist.apache.org/repos/dist/dev/cassandra/cassandra-sidecar
cassandra-sidecar-dist-dev"
+
+ echo "Copying debian package ..." 1>&3 2>&4
+ execute "mkdir ${tmp_dir}/cassandra-sidecar-dist-dev/${release}/debian"
+ execute "cp
${distributions_dir}/apache-cassandra-sidecar_${release}_all.deb*
${tmp_dir}/cassandra-sidecar-dist-dev/${release}/debian/"
+
+ execute "cd $tmp_dir"
+ execute "svn add --force cassandra-sidecar-dist-dev/${release}/debian"
+ echo "Staging Cassandra Sidecar debian packages for $release" > "_tmp_msg_"
+ execute "svn ci -F _tmp_msg_ cassandra-sidecar-dist-dev/${release}/debian"
+ execute "cd $current_dir"
+fi
+
+## RPM Stuff ##
+
+if [ $only_deb -eq 0 ]
+then
+ execute "cd $tmp_dir"
+ execute "svn co
https://dist.apache.org/repos/dist/dev/cassandra/cassandra-sidecar
cassandra-sidecar-dist-dev"
+
+ echo "Copying redhat packages ..." 1>&3 2>&4
+ execute "mkdir $tmp_dir/cassandra-sidecar-dist-dev/${release}/redhat"
+ execute "cp
${distributions_dir}/apache-cassandra-sidecar-${release}.noarch.rpm*
${tmp_dir}/cassandra-sidecar-dist-dev/${release}/redhat/"
+
+ execute "cd $tmp_dir"
+ execute "svn add --force cassandra-sidecar-dist-dev/${release}/redhat"
+ echo "staging cassandra rpm packages for $release" > "_tmp_msg_"
+ execute "svn ci -F _tmp_msg_ cassandra-sidecar-dist-dev/${release}/redhat"
+ execute "cd $current_dir"
+fi
+
+if [ $only_deb -eq 0 ] && [ $only_rpm -eq 0 ]
+then
+
+ # Restore stdout/stderr (and close temporary descriptors) if not verbose
+ [ $verbose -eq 1 ] || exec 1>&3 3>&- 2>&4 4>&-
+
+ # Cleaning up
+ [ $fake_mode -eq 1 ] && echo ">> rm -rf $tmp_dir"
+ rm -rf $tmp_dir
+
+ ## Email templates ##
+ [ $fake_mode -eq 1 ] && echo ">> rm -rf $mail_dir"
+ mkdir -p $mail_dir
+ mail_test_announce_file="$mail_dir/mail_stage_announce_$release"
+ mail_vote_file="$mail_dir/mail_vote_$release"
+
+ echo "[ANNOUNCE] Apache Cassandra Sidecar $release test artifact
available" > $mail_test_announce_file
+ echo "" >> $mail_test_announce_file
+ echo "The test build of Cassandra Sidecar ${release} is available." >>
$mail_test_announce_file
+ echo "" >> $mail_test_announce_file
+ echo "sha1: $head_commit" >> $mail_test_announce_file
+ echo "Git:
https://github.com/apache/cassandra-sidecar/tree/$release-tentative" >>
$mail_test_announce_file
+ echo "Maven Artifacts:" >> $mail_test_announce_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number/org/apache/cassandra/sidecar-server/$release/"
>> $mail_test_announce_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number/org/apache/cassandra/sidecar-client/$release/"
>> $mail_test_announce_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number/org/apache/cassandra/sidecar-adapters-cassandra41/$release/"
>> $mail_test_announce_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number/org/apache/cassandra/sidecar-adapters-base/$release/"
>> $mail_test_announce_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number/org/apache/cassandra/sidecar-vertx-client/$release/"
>> $mail_test_announce_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number/org/apache/cassandra/sidecar-client-common/$release/"
>> $mail_test_announce_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number/org/apache/cassandra/sidecar-vertx-client-all/$release/"
>> $mail_test_announce_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number/org/apache/cassandra/sidecar-server-common/$release/"
>> $mail_test_announce_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number/org/apache/cassandra/sidecar-vertx-auth-mtls/$release/"
>> $mail_test_announce_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number_java_8/org/apache/cassandra/sidecar-client/$release-jdk8/"
>> $mail_test_announce_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number_java_8/org/apache/cassandra/sidecar-vertx-client/$release-jdk8/"
>> $mail_test_announce_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number_java_8/org/apache/cassandra/sidecar-client-common/$release-jdk8/"
>> $mail_test_announce_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number_java_8/org/apache/cassandra/sidecar-vertx-client-all/$release-jdk8/"
>> $mail_test_announce_file
+ echo "" >> $mail_test_announce_file
+ echo "The Source and Build Artifacts, and the Debian and RPM packages and
repositories, are available here:
https://dist.apache.org/repos/dist/dev/cassandra/cassandra-sidecar/$release/"
>> $mail_test_announce_file
+ echo "" >> $mail_test_announce_file
+ echo "A vote of this test build will be initiated within the next couple
of days." >> $mail_test_announce_file
+ echo "" >> $mail_test_announce_file
+ echo "[1]: CHANGES.txt:
https://github.com/apache/cassandra-sidecar/blob/$release-tentative/CHANGES.txt"
>> $mail_test_announce_file
+ echo "[2]: NEWS.txt:
https://github.com/apache/cassandra-sidecar/blob/$release-tentative/NEWS.txt"
>> $mail_test_announce_file
+
+ echo "Test announcement mail written to $mail_test_announce_file"
+
+
+ echo "[VOTE] Release Apache Cassandra Sidecar $release" > $mail_vote_file
+ echo "" >> $mail_vote_file
+ echo "Proposing the test build of Cassandra Sidecar ${release} for
release." >> $mail_vote_file
+ echo "" >> $mail_vote_file
+ echo "sha1: $head_commit" >> $mail_vote_file
+ echo "Git:
https://github.com/apache/cassandra-sidecar/tree/$release-tentative" >>
$mail_vote_file
+ echo "Maven Artifacts:" >> $mail_vote_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number/org/apache/cassandra/sidecar-server/$release/"
>> $mail_vote_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number/org/apache/cassandra/sidecar-client/$release/"
>> $mail_vote_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number/org/apache/cassandra/sidecar-adapters-cassandra41/$release/"
>> $mail_vote_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number/org/apache/cassandra/sidecar-adapters-base/$release/"
>> $mail_vote_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number/org/apache/cassandra/sidecar-vertx-client/$release/"
>> $mail_vote_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number/org/apache/cassandra/sidecar-client-common/$release/"
>> $mail_vote_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number/org/apache/cassandra/sidecar-vertx-client-all/$release/"
>> $mail_vote_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number/org/apache/cassandra/sidecar-server-common/$release/"
>> $mail_vote_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number/org/apache/cassandra/sidecar-vertx-auth-mtls/$release/"
>> $mail_vote_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number_java_8/org/apache/cassandra/sidecar-client/$release-jdk8/"
>> $mail_vote_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number_java_8/org/apache/cassandra/sidecar-vertx-client/$release-jdk8/"
>> $mail_vote_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number_java_8/org/apache/cassandra/sidecar-client-common/$release-jdk8/"
>> $mail_vote_file
+ echo
"$staging_repo/orgapachecassandra-$staging_number_java_8/org/apache/cassandra/sidecar-vertx-client-all/$release-jdk8/"
>> $mail_vote_file
+ echo "" >> $mail_vote_file
+ echo "The Source and Build Artifacts, and the Debian and RPM packages and
repositories, are available here:
https://dist.apache.org/repos/dist/dev/cassandra/cassandra-sidecar/$release/"
>> $mail_vote_file
+ echo "" >> $mail_vote_file
+ echo "The vote will be open for 72 hours (longer if needed). Everyone who
has tested the build is invited to vote. Votes by PMC members are considered
binding. A vote passes if there are at least three binding +1s and no -1's." >>
$mail_vote_file
+ echo "" >> $mail_vote_file
+ echo "[1]: CHANGES.txt:
https://github.com/apache/cassandra-sidecar/blob/$release-tentative/CHANGES.txt"
>> $mail_vote_file
+ echo "[2]: NEWS.txt:
https://github.com/apache/cassandra-sidecar/blob/$release-tentative/NEWS.txt"
>> $mail_vote_file
+
+ echo "Vote mail written to $mail_vote_file"
+fi
+
+
+echo "Done cutting and staging release artifacts. Please make sure to:"
+echo " 1) verify all staged artifacts"
+echo " 2) email the announcement email"
+echo " 3) after a couple of days, email the vote email"
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]