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 <francisco.guerr...@apple.com>
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="g...@github.com:apache/cassandra.git"
+asf_git_repo="${asf_git_repo:-g...@github.com:apache/cassandra-sidecar.git}"
+
+if [ "x${asf_git_repo}" != "x...@github.com: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: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to