You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by mc...@apache.org on 2020/04/24 13:20:34 UTC
[cassandra-builds] branch master updated: Source and build
artifacts are published with sha512 checksums
This is an automated email from the ASF dual-hosted git repository.
mck pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cassandra-builds.git
The following commit(s) were added to refs/heads/master by this push:
new 0bdc460 Source and build artifacts are published with sha512 checksums
0bdc460 is described below
commit 0bdc460cba741a47abb0634905aa7bcd5310f13a
Author: mck <mc...@apache.org>
AuthorDate: Wed Nov 13 14:36:06 2019 +0100
Source and build artifacts are published with sha512 checksums
The distribution artifacts are no longer deployed to the maven staging repository. Instead they are just gpg signed, and prepare_release.sh commits them into the asf dev dist location.
Build both the deb/rpm packages and repositories before vote, each in the separate debian/ and redhat/ subdirectoroes. Do the bintray upload inside of finish_release.sh
Add `dch -r -D unstable` into prepare_relase.sh script (CASSANDRA-15541)
patch by Mick Semb Wever; reviewed by Michael Shuler for CASSANDRA-14970
---
cassandra-release/README.md | 2 +-
cassandra-release/finish_release.sh | 165 ++++++++++++-------
cassandra-release/prepare_release.sh | 301 ++++++++++++++++++++++++++---------
cassandra-release/upload_bintray.sh | 22 ---
docker/centos7-image.docker | 4 +-
5 files changed, 336 insertions(+), 158 deletions(-)
diff --git a/cassandra-release/README.md b/cassandra-release/README.md
index d443cf8..aac043d 100644
--- a/cassandra-release/README.md
+++ b/cassandra-release/README.md
@@ -1,5 +1,5 @@
Cassandra release scripts
=========================
-For release managers of cassandra.
+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-release/finish_release.sh
index c18bacf..75edfe2 100755
--- a/cassandra-release/finish_release.sh
+++ b/cassandra-release/finish_release.sh
@@ -4,21 +4,24 @@
asf_username="$USER"
+# your username to log into bintray (your account needs access to the "apache" organisation)
+BINTRAY_USER="$USER"
+# get your bintray API Key from https://bintray.com/profile/edit/apikey
+BINTRAY_KEY="XXXXXXXX"
+
# The name of remote for the asf remote in your git repo
git_asf_remote="origin"
-# Same as for .prepare_release.sh
mail_dir="$HOME/Mail"
-debian_package_dir="$HOME/tmp/debian"
-# The directory for reprepro
-reprepro_dir="$debian_package_dir/packages"
-artifacts_svn_dir="$HOME/svn/cassandra-dist"
+###################
+# 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; }
###################
asf_git_repo="https://gitbox.apache.org/repos/asf"
-apache_host="people.apache.org"
# Reset getopts in case it has been used previously in the shell.
OPTIND=1
@@ -30,14 +33,14 @@ fake_mode=0
show_help()
{
local name=`basename $0`
- echo "$name [options] <release_version> <staging_number>"
+ echo "$name [options] <release_version>"
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 ""
- echo "Example: $name 2.0.3 1024"
+ echo "Example: $name 2.0.3"
}
while getopts ":hvf" opt; do
@@ -61,7 +64,6 @@ done
shift $(($OPTIND-1))
release=$1
-staging_number=$2
deb_release=${release/-/\~}
if [ -z "$release" ]
@@ -70,14 +72,8 @@ then
show_help
exit 1
fi
-if [ -z "$staging_number" ]
-then
- echo "Missing argument <staging_number>"
- show_help
- exit 1
-fi
-if [ "$#" -gt 2 ]
+if [ "$#" -gt 1 ]
then
shift
echo "Too many arguments. Don't know what to do with '$@'"
@@ -96,9 +92,9 @@ fi
if [ "$release" == "$deb_release" ]
then
- echo "Publishing release $release using staging number $staging_number"
+ echo "Publishing release $release"
else
- echo "Publishing release $release (debian uses $deb_release) using staging number $staging_number"
+ echo "Publishing release $release (debian uses $deb_release)"
fi
# "Saves" stdout to other descriptor since we might redirect them below
@@ -127,29 +123,14 @@ execute()
fi
}
-idx=`expr index "$release" -`
-if [ $idx -eq 0 ]
-then
- release_short=${release}
-else
- release_short=${release:0:$((idx-1))}
-fi
-release_major=$(echo ${release_short} | cut -d '.' -f 1)
-release_minor=$(echo ${release_short} | cut -d '.' -f 2)
-
echo "Deploying artifacts ..." 1>&3 2>&4
-start_dir=$PWD
-cd $artifacts_svn_dir
-mkdir $release_short
-cd $release_short
-for type in bin src; do
- for part in gz gz.md5 gz.sha1 gz.asc gz.asc.md5 gz.asc.sha1; do
- echo "Downloading apache-cassandra-${release}-$type.tar.$part..." 1>&3 2>&4
- curl -O https://repository.apache.org/content/repositories/orgapachecassandra-${staging_number}/org/apache/cassandra/apache-cassandra/${release}/apache-cassandra-${release}-$type.tar.$part
- done
-done
+cassandra_dir=$PWD
-cd $start_dir
+#
+# Rename the git tag, removing the -tenative suffix
+#
+
+execute "cd $cassandra_dir"
echo "Tagging release ..." 1>&3 2>&4
execute "git checkout $release-tentative"
@@ -162,19 +143,82 @@ execute "git push $git_asf_remote refs/tags/cassandra-$release"
execute "git tag -d $release-tentative"
execute "git push $git_asf_remote :refs/tags/$release-tentative"
+#
+# Move staging artifacts to release distribution location
+#
+
+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/"
+rm _tmp_msg_
+
+#
+# Public deploy the Debian packages
+#
+
echo "Deploying debian packages ..." 1>&3 2>&4
-current_dir=`pwd`
+# Upload to bintray
+debian_dist_dir=$tmp_dir/cassandra-dist-$release
+[ -e "$debian_dist_dir" ] || mkdir $debian_dist_dir # create it for fake mode, to satisfy `find …` command below
+execute "cd $debian_dist_dir"
+
+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`
+ if [[ $IFILE != "." ]];
+ then
+ FDIR=`echo $i | cut -c ${ROOTLEN}-${#i}`
+ echo "Uploading $FDIR"
+ execute "curl -X PUT -T $i -u${BINTRAY_USER}:${BINTRAY_KEY} https://api.bintray.com/content/apache/cassandra/debian/prod${FDIR}?override=1"
+ sleep 1
+ fi
+done
+cd $tmp_dir
+
+# Move to dist release top-level debian directory
+idx=`expr index "$release" -`
+if [ $idx -eq 0 ]
+then
+ release_short=${release}
+else
+ release_short=${release:0:$((idx-1))}
+fi
+release_major=$(echo ${release_short} | cut -d '.' -f 1)
+release_minor=$(echo ${release_short} | cut -d '.' -f 2)
+repo_series="${release_major}${release_minor}x"
+
+echo "performing a server-side: svn mv ^/dist/release/cassandra/$release/debian/pool/main/c/cassandra/* ^/dist/release/cassandra/debian/pool/main/c/cassandra/"
+
+for f in $( svn list "https://dist.apache.org/repos/dist/release/cassandra/$release/debian/pool/main/c/cassandra/" )
+do
+ echo "Apache Cassandra $release debian artifact $f" > "_tmp_msg_"
+ echo "svn mv -F _tmp_msg_ https://dist.apache.org/repos/dist/release/cassandra/$release/debian/pool/main/c/cassandra/$f https://dist.apache.org/repos/dist/release/cassandra/debian/pool/main/c/cassandra/"
+ execute "svn mv -F _tmp_msg_ https://dist.apache.org/repos/dist/release/cassandra/$release/debian/pool/main/c/cassandra/$f https://dist.apache.org/repos/dist/release/cassandra/debian/pool/main/c/cassandra/"
+done
+
+echo "Apache Cassandra $release debian artifacts" > "_tmp_msg_"
+execute "svn rm -F _tmp_msg_ https://dist.apache.org/repos/dist/release/cassandra/debian/dists/$repo_series"
+execute "svn mv -F _tmp_msg_ https://dist.apache.org/repos/dist/release/cassandra/$release/debian/dists/$repo_series https://dist.apache.org/repos/dist/release/cassandra/debian/dists/"
+execute "svn rm -F _tmp_msg_ https://dist.apache.org/repos/dist/release/cassandra/$release/debian/dists"
+execute "svn rm -F _tmp_msg_ https://dist.apache.org/repos/dist/release/cassandra/$release/debian/pool"
+
+#
+# Public deploy the RedHat packages
+#
-debian_series="${release_major}${release_minor}x"
+echo "Deploying redhat packages ..." 1>&3 2>&4
-execute "cd $reprepro_dir"
-execute "reprepro --ignore=wrongdistribution include $debian_series $debian_package_dir/cassandra_${release}_debian/cassandra_${deb_release}_*.changes"
-execute "cp -p pool/main/c/cassandra/cassandra*_${deb_release}* ${artifacts_svn_dir}/debian/pool/main/c/cassandra"
-execute "cp -p ${artifacts_svn_dir}/$release_short/apache-cassandra-${release}-src.tar.gz.asc ${artifacts_svn_dir}/debian/pool/main/c/cassandra/cassandra_${deb_release}.orig.tar.gz.asc"
-execute "cp -a dists/$debian_series ${artifacts_svn_dir}/debian/dists"
+# Move to dist release top-level redhat directory
+echo "Apache Cassandra $release redhat artifacts" > "_tmp_msg_"
+execute "svn rm -F _tmp_msg_ https://dist.apache.org/repos/dist/release/cassandra/redhat/$repo_series"
+execute "svn mv -F _tmp_msg_ https://dist.apache.org/repos/dist/release/cassandra/$release/redhat https://dist.apache.org/repos/dist/release/cassandra/redhat/$repo_series"
-execute "cd $current_dir"
+# Cleaning up
+execute "cd $cassandra_dir"
+rm -rf $tmp_dir
# Restore stdout/stderr (and close temporary descriptors) if not verbose
[ $verbose -eq 1 ] || exec 1>&3 3>&- 2>&4 4>&-
@@ -204,18 +248,17 @@ echo "[2]: NEWS.txt $asf_git_repo?p=cassandra.git;a=blob_plain;f=NEWS.txt;hb=ref
echo "[3]: https://issues.apache.org/jira/browse/CASSANDRA" >> $mail_file
-echo "Done deploying artifacts. Please make sure to:"
-echo " 0) commit changes to ${artifacts_svn_dir}"
-echo " 1) release artifacts from repository.apache.org"
-echo " 2) wait for the artifacts to sync at http://www.apache.org/dist/cassandra/"
-echo " 3) upload debian repo to bintray: ./upload_bintray.sh ${artifacts_svn_dir}/debian"
-echo " 4) update the website (~/Git/hyde/hyde.py -g -s src/ -d publish/)" # TODO - this is old info and needs updating..
-echo " 5) update CQL doc if appropriate"
-echo " 6) update wikipedia page if appropriate"
-echo " 7) send announcement email: draft in $mail_dir/mail_release_$release"
-echo " 8) update #cassandra topic on slack"
-echo " 9) tweet from @cassandra"
-echo " 10) release version in JIRA"
-echo " 11) remove old version from people.apache.org (in /www/www.apache.org/dist/cassandra and debian)"
-echo " 12) increment build.xml base.version for the next release"
+echo 'Done deploying artifacts. Please make sure to:'
+echo ' 1) release artifacts from repository.apache.org'
+echo ' 2) wait for the artifacts to sync at https://downloads.apache.org/cassandra/'
+echo ' 3) login to bintray and \"publish\" the uploaded artifacts'
+echo ' 4) update the website (TODO provide link)' # TODO - this is old info and needs updating..
+echo ' 5) update CQL doc if appropriate'
+echo ' 6) update wikipedia page if appropriate'
+echo ' 7) send announcement email: draft in $mail_file'
+echo ' 8) update #cassandra topic on slack'
+echo ' 9) tweet from @cassandra'
+echo ' 10) release version in JIRA'
+echo ' 11) remove old version (eg: `svn co https://dist.apache.org/repos/dist/release/cassandra/ cassandra-dist; svn rm <previous_version> debian/pool/main/c/cassandra/<previous_version>*`)'
+echo ' 12) increment build.xml base.version for the next release'
diff --git a/cassandra-release/prepare_release.sh b/cassandra-release/prepare_release.sh
index 9a2a7ff..4de3d78 100755
--- a/cassandra-release/prepare_release.sh
+++ b/cassandra-release/prepare_release.sh
@@ -11,14 +11,23 @@ git_asf_remote="origin"
# Where you want to put the mail draft that this script generate
mail_dir="$HOME/Mail"
-# Where you want to put the debian files
-debian_package_dir="$HOME/tmp/debian"
-
###################
+# 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 ant >/dev/null 2>&1 || { echo >&2 "ant needs to be installed"; exit 1; }
+command -v dpkg-buildpackage >/dev/null 2>&1 || { echo >&2 "dpkg needs to be installed"; exit 1; }
+command -v dpatch >/dev/null 2>&1 || { echo >&2 "dpatch needs to be installed"; exit 1; } # can be removed after 2.2 EOL
+command -v debsign >/dev/null 2>&1 || { echo >&2 "devscripts needs to be installed"; exit 1; }
+command -v reprepro >/dev/null 2>&1 || { echo >&2 "reprepro needs to be installed"; exit 1; }
+command -v rpmsign >/dev/null 2>&1 || { echo >&2 "rpmsign needs to be installed"; exit 1; }
+command -v docker >/dev/null 2>&1 || { echo >&2 "docker needs to be installed"; exit 1; }
+command -v createrepo >/dev/null 2>&1 || { echo >&2 "createrepo needs to be installed"; exit 1; }
+(docker info >/dev/null 2>&1) || { echo >&2 "docker needs to running"; exit 1; }
+###################
asf_git_repo="https://gitbox.apache.org/repos/asf"
staging_repo="https://repository.apache.org/content/repositories"
-apache_host="people.apache.org"
# Reset getopts in case it has been used previously in the shell.
OPTIND=1
@@ -27,6 +36,7 @@ OPTIND=1
verbose=0
fake_mode=0
only_deb=0
+only_rpm=0
show_help()
{
@@ -38,11 +48,12 @@ 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 " -d: only build the debian package"
+ echo " -r: only build the rpm package"
echo ""
echo "Example: $name 2.0.3"
}
-while getopts ":hvfd" opt; do
+while getopts ":hvfdr" opt; do
case "$opt" in
h)
show_help
@@ -54,6 +65,8 @@ while getopts ":hvfd" opt; do
;;
d) only_deb=1
;;
+ r) only_rpm=1
+ ;;
\?)
echo "Invalid option: -$OPTARG" >&2
show_help
@@ -62,6 +75,12 @@ while getopts ":hvfd" opt; do
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
@@ -91,31 +110,41 @@ then
exit 1
fi
-head_commit=`git log --pretty=oneline -1 | cut - -d " " -f 1`
+if ! git diff-index --quiet HEAD --
+then
+ echo "This git Cassandra directory has uncommitted changes."
+ echo "You must run this from a clean Cassandra git source repository."
+ exit 1
+fi
-if [ "$release" == "$deb_release" ]
+if [ $only_deb -eq 0 ] && [ $only_rpm -eq 0 ]
then
- echo "Preparing release for $release from commit:"
-else
- echo "Preparing release for $release (debian will use $deb_release) from commit:"
+ 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
+
+ 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
-echo ""
-git show $head_commit
-
-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
# "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 ouptut to a logfile
+ # Not verbose, redirect all output to a logfile
logfile="vote-${release}.log"
[ ! -e "$logfile" ] || rm $logfile
touch $logfile
@@ -137,11 +166,34 @@ execute()
}
current_dir=`pwd`
-# This appear to be the simpler way to make this work for both linux and OSX (http://goo.gl/9RKld3)
-tmp_dir=`mktemp -d 2>/dev/null || mktemp -d -t 'release'`
+cassandra_builds_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )/.."
+tmp_dir=`mktemp -d`
+build_dir=${tmp_dir}/cassandra/build
+debian_package_dir="${tmp_dir}/debian"
+rpm_package_dir="${tmp_dir}/rpm"
+
+idx=`expr index "$release" -`
+if [ $idx -eq 0 ]
+then
+ release_short=${release}
+else
+ release_short=${release:0:$((idx-1))}
+fi
+release_major=$(echo ${release_short} | cut -d '.' -f 1)
+release_minor=$(echo ${release_short} | cut -d '.' -f 2)
-if [ $only_deb -eq 0 ]
+
+if [ $only_deb -eq 0 ] && [ $only_rpm -eq 0 ]
then
+ echo "Update debian changelog, please correct changelog, name, and email."
+ read -n 1 -s -r -p "press any key to continue…" 1>&3 2>&4
+ execute "dch -r -D unstable"
+ echo "Prepare debian changelog for $release" > "_tmp_msg_"
+ execute "git commit -F _tmp_msg_ debian/changelog"
+ execute "rm _tmp_msg_"
+ head_commit=`git log --pretty=oneline -1 | cut -d " " -f 1`
+ # this commit needs to be forward merged and atomic pushed (see reminders at bottom)
+
echo "Tagging release ..." 1>&3 2>&4
execute "git tag $release-tentative"
execute "git push $git_asf_remote refs/tags/$release-tentative"
@@ -158,70 +210,173 @@ then
execute "ant publish -Drelease=true -Dbase.version=$release"
echo "Artifacts uploaded, please close release on repository.apache.org and indicate the staging number:" 1>&3 2>&4
-else
- echo "Please indicate staging number:" 1>&3 2>&4
-fi
+ read -p "staging number? " staging_number 1>&3 2>&4
-read -p "staging number? " staging_number 1>&3 2>&4
+ execute "cd $tmp_dir"
+ execute "svn co https://dist.apache.org/repos/dist/dev/cassandra cassandra-dist-dev"
+ execute "mkdir cassandra-dist-dev/${release}"
+ execute "cp ${build_dir}/apache-cassandra-${release}-src.tar.gz* cassandra-dist-dev/${release}/"
+ execute "cp ${build_dir}/apache-cassandra-${release}-bin.tar.gz* cassandra-dist-dev/${release}/"
+ execute "svn add cassandra-dist-dev/${release}"
+ echo "staging cassandra $release" > "_tmp_msg_"
+ execute "svn ci -F _tmp_msg_ cassandra-dist-dev/${release}"
+ execute "rm _tmp_msg_"
+ execute "cd $current_dir"
+fi
## Debian Stuffs ##
-execute "cd $debian_package_dir"
+if [ $only_rpm -eq 0 ]
+then
+ execute "cd $tmp_dir"
+ execute "svn co https://dist.apache.org/repos/dist/dev/cassandra cassandra-dist-dev"
+
+ execute "mkdir -p $debian_package_dir"
+ execute "cd $debian_package_dir"
+
+ deb_dir=cassandra_${release}_debian
+ [ ! -e "$deb_dir" ] || rm -rf $deb_dir
+ execute "mkdir $deb_dir"
+ execute "cd $deb_dir"
+
+ echo "Building debian package ..." 1>&3 2>&4
+
+ execute "mkdir -p $build_dir"
+ execute "cp $tmp_dir/cassandra-dist-dev/${release}/apache-cassandra-$release-src.tar.gz ${build_dir}/"
+ execute "tar xvzf ${build_dir}/apache-cassandra-${release}-src.tar.gz"
+ execute "cd apache-cassandra-${release}-src"
+ execute "dpkg-buildpackage -rfakeroot -us -uc"
+ execute "cd .."
+ # Debsign might ask the passphrase on stdin so don't hide what he says even if no verbose
+ # (I haven't tested carefully but I've also seen it fail unexpectedly with it's output redirected.
+ execute "debsign -k$gpg_key cassandra_${deb_release}_amd64.changes" 1>&3 2>&4
+
+ execute "mkdir $tmp_dir/cassandra-dist-dev/${release}/debian"
+ execute "cp cassandra* $tmp_dir/cassandra-dist-dev/${release}/debian/"
+
+ echo "Building debian repository ..." 1>&3 2>&4
+ debian_series="${release_major}${release_minor}x"
+
+ echo "Origin: Apache Cassandra Packages" > $tmp_dir/distributions
+ echo "Label: Apache Cassandra Packages" >> $tmp_dir/distributions
+ echo "Codename: $debian_series" >> $tmp_dir/distributions
+ echo "Architectures: i386 amd64 source" >> $tmp_dir/distributions
+ echo "Components: main" >> $tmp_dir/distributions
+ echo "Description: Apache Cassandra APT Repository" >> $tmp_dir/distributions
+ echo "SignWith: $gpg_key" >> $tmp_dir/distributions
+
+ execute "cd $tmp_dir/cassandra-dist-dev/${release}/debian/"
+ execute "mkdir conf"
+ execute "mv $tmp_dir/distributions conf/"
+ execute "reprepro --ignore=wrongdistribution include $debian_series cassandra_${deb_release}_*.changes"
+ execute "rm -R db conf"
-deb_dir=cassandra_${release}_debian
-[ ! -e "$deb_dir" ] || rm -rf $deb_dir
-execute "mkdir $deb_dir"
-execute "cd $deb_dir"
+ execute "cd $tmp_dir"
+ execute "svn add --force cassandra-dist-dev/${release}/debian"
+ echo "staging cassandra debian packages for $release" > "_tmp_msg_"
+ execute "svn ci -F _tmp_msg_ cassandra-dist-dev/${release}/debian"
+ execute "cd $current_dir"
+fi
-echo "Building debian package ..." 1>&3 2>&4
+## RPM Stuff ##
-execute "wget $staging_repo/orgapachecassandra-$staging_number/org/apache/cassandra/apache-cassandra/$release/apache-cassandra-$release-src.tar.gz"
-execute "mv apache-cassandra-$release-src.tar.gz cassandra_${deb_release}.orig.tar.gz"
-execute "tar xvzf cassandra_${deb_release}.orig.tar.gz"
-execute "cd apache-cassandra-${release}-src"
-execute "dpkg-buildpackage -rfakeroot -us -uc"
-execute "cd .."
-# Debsign might ask the passphrase on stdin so don't hide what he says even if no verbose
-# (I haven't tested carefully but I've also seen it fail unexpectedly with it's output redirected.
-execute "debsign -k$gpg_key cassandra_${deb_release}_amd64.changes" 1>&3 2>&4
+if [ $only_deb -eq 0 ]
+then
+
+ execute "cd $tmp_dir"
+ execute "svn co https://dist.apache.org/repos/dist/dev/cassandra cassandra-dist-dev"
-echo "Uploading debian package ..." 1>&3 2>&4
+ execute "mkdir -p $rpm_package_dir"
+ execute "cd $rpm_package_dir"
-cat > /tmp/sftpbatch.txt <<EOF
-cd public_html
-put cassandra*
-EOF
+ rpm_dir=$rpm_package_dir/cassandra_${release}_rpm
+ [ ! -e "$rpm_dir" ] || rm -rf $rpm_dir
+ execute "mkdir $rpm_dir"
+
+ execute "cd $cassandra_builds_dir"
+ if [[ $(docker images -f label=org.cassandra.buildenv=centos -q) ]]
+ then
+ execute "docker image rm -f `docker images -f label=org.cassandra.buildenv=centos -q`"
+ fi
+ execute "docker build -f docker/centos7-image.docker docker/"
+ execute "docker run --rm -v ${rpm_dir}:/dist `docker images -f label=org.cassandra.buildenv=centos -q` /home/build/build-rpms.sh ${release}-tentative"
+ execute "rpmsign --addsign ${rpm_dir}/*.rpm"
+ execute "mkdir $tmp_dir/cassandra-dist-dev/${release}/redhat"
+ execute "cp ${rpm_dir}/*.rpm $tmp_dir/cassandra-dist-dev/${release}/redhat/"
-execute "sftp -b /tmp/sftpbatch.txt ${asf_username}@${apache_host}"
+ echo "Building redhat repository ..." 1>&3 2>&4
-execute "cd $current_dir"
+ execute "cd $tmp_dir/cassandra-dist-dev/${release}/redhat/"
+ execute "createrepo ."
-# Restore stdout/stderr (and close temporary descriptors) if not verbose
-[ $verbose -eq 1 ] || exec 1>&3 3>&- 2>&4 4>&-
+ # FIXME - put into execute "…"
+ [ $fake_mode -eq 1 ] || for f in repodata/repomd.xml repodata/*.bz2 repodata/*.gz ; do gpg --detach-sign --armor $f ; done
-# Cleaning up
-rm -rf $tmp_dir
+ execute "cd $tmp_dir"
+ execute "svn add --force cassandra-dist-dev/${release}/redhat"
+ echo "staging cassandra rpm packages for $release" > "_tmp_msg_"
+ execute "svn ci -F _tmp_msg_ cassandra-dist-dev/${release}/redhat"
+ execute "cd $current_dir"
+fi
-## Email for vote ##
+if [ $only_deb -eq 0 ] && [ $only_rpm -eq 0 ]
+then
-mail_file="$mail_dir/mail_vote_$release"
-[ ! -e "$mail_file" ] || rm $mail_file
+ # Restore stdout/stderr (and close temporary descriptors) if not verbose
+ [ $verbose -eq 1 ] || exec 1>&3 3>&- 2>&4 4>&-
+
+ # Cleaning up
+ rm -rf $tmp_dir
+
+
+ ## Email templates ##
+
+ [ ! -e "$mail_dir" ] || rm -rf $mail_dir
+ mkdir $mail_dir
+ mail_test_announce_file="$mail_dir/mail_stage_announce_$release"
+ mail_vote_file="$mail_dir/mail_vote_$release"
+
+ echo "[ANNOUNCE] Apache Cassandra $release test artifact available" > $mail_test_announce_file
+ echo "" >> $mail_test_announce_file
+ echo "The test build of Cassandra ${release} is available." >> $mail_test_announce_file
+ echo "" >> $mail_test_announce_file
+ echo "sha1: $head_commit" >> $mail_test_announce_file
+ echo "Git: $asf_git_repo?p=cassandra.git;a=shortlog;h=refs/tags/$release-tentative" >> $mail_test_announce_file
+ echo "Maven Artifacts: $staging_repo/orgapachecassandra-$staging_number/org/apache/cassandra/cassandra-all/$release/" >> $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/$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: $asf_git_repo?p=cassandra.git;a=blob_plain;f=CHANGES.txt;hb=refs/tags/$release-tentative" >> $mail_test_announce_file
+ echo "[2]: NEWS.txt: $asf_git_repo?p=cassandra.git;a=blob_plain;f=NEWS.txt;hb=refs/tags/$release-tentative" >> $mail_test_announce_file
+
+ echo "Test announcement mail written to $mail_test_announce_file"
+
+
+ echo "[VOTE] Release Apache Cassandra $release" > $mail_vote_file
+ echo "" >> $mail_vote_file
+ echo "Proposing the test build of Cassandra ${release} for release." >> $mail_vote_file
+ echo "" >> $mail_vote_file
+ echo "sha1: $head_commit" >> $mail_vote_file
+ echo "Git: $asf_git_repo?p=cassandra.git;a=shortlog;h=refs/tags/$release-tentative" >> $mail_vote_file
+ echo "Maven Artifacts: $staging_repo/orgapachecassandra-$staging_number/org/apache/cassandra/cassandra-all/$release/" >> $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/$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." >> $mail_vote_file
+ echo "" >> $mail_vote_file
+ echo "[1]: CHANGES.txt: $asf_git_repo?p=cassandra.git;a=blob_plain;f=CHANGES.txt;hb=refs/tags/$release-tentative" >> $mail_vote_file
+ echo "[2]: NEWS.txt: $asf_git_repo?p=cassandra.git;a=blob_plain;f=NEWS.txt;hb=refs/tags/$release-tentative" >> $mail_vote_file
+
+ echo "Vote mail written to $mail_vote_file"
+fi
-echo "[VOTE] Release Apache Cassandra $release" > $mail_file
-echo "" >> $mail_file
-echo "I propose the following artifacts for release as $release." >> $mail_file
-echo "" >> $mail_file
-echo "sha1: $head_commit" >> $mail_file
-echo "Git: $asf_git_repo?p=cassandra.git;a=shortlog;h=refs/tags/$release-tentative" >> $mail_file
-echo "Artifacts: $staging_repo/orgapachecassandra-$staging_number/org/apache/cassandra/apache-cassandra/$release/" >> $mail_file
-echo "Staging repository: $staging_repo/orgapachecassandra-$staging_number/" >> $mail_file
-echo "" >> $mail_file
-echo "The Debian and RPM packages are available here: http://$apache_host/~$asf_username" >> $mail_file
-echo "" >> $mail_file
-echo "The vote will be open for 72 hours (longer if needed)." >> $mail_file
-echo "" >> $mail_file
-echo "[1]: CHANGES.txt: $asf_git_repo?p=cassandra.git;a=blob_plain;f=CHANGES.txt;hb=refs/tags/$release-tentative" >> $mail_file
-echo "[2]: NEWS.txt: $asf_git_repo?p=cassandra.git;a=blob_plain;f=NEWS.txt;hb=refs/tags/$release-tentative" >> $mail_file
-echo "Mail written to $mail_file"
+echo "Done cutting and staging release artifacts. Please make sure to:"
+echo " 1) verify all staged artifacts"
+echo " 2) close the nexus staging repository $staging_number"
+echo " 3) forward merge and atomic push the debian/changelog commit"
+echo " 4) email the announcement email"
+echo " 5) after a couple of days, email the vote email"
diff --git a/cassandra-release/upload_bintray.sh b/cassandra-release/upload_bintray.sh
deleted file mode 100755
index f985a07..0000000
--- a/cassandra-release/upload_bintray.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash
-
-BINTRAY_USER="$USER"
-BINTRAY_KEY="XXXXXXXX"
-
-#Example:
-#./upload_bintray.sh ~/workspace/cassandra-dist-svn/debian
-
-ROOTDIR=`cd -P -- "$(dirname -- "$1")" && printf '%s\n' "$(pwd -P)/$(basename -- "$1")"`
-ROOTLEN=$(( ${#ROOTDIR} + 1))
-
-for i in $(find ${ROOTDIR} -type f -mtime -10 -printf "%T@ %p\n" | sort -n -r | cut -d' ' -f 2); do
- IFILE=`echo $(basename -- "$i") | cut -c 1`
- if [[ $IFILE != "." ]];
- then
- FDIR=`echo $i | cut -c ${ROOTLEN}-${#i}`
- echo "Uploading $FDIR"
- curl -X PUT -T $i -u${BINTRAY_USER}:${BINTRAY_KEY} "https://api.bintray.com/content/apache/cassandra/debian/prod${FDIR}?override=1"
- sleep 1
- fi
-done
-
diff --git a/docker/centos7-image.docker b/docker/centos7-image.docker
index 47a7e87..27b716e 100644
--- a/docker/centos7-image.docker
+++ b/docker/centos7-image.docker
@@ -11,6 +11,7 @@ VOLUME ${RPM_DIST_DIR}
# install deps
RUN yum -y install \
+ yum-plugin-ovl \
ant \
ant-junit \
epel-release \
@@ -20,7 +21,8 @@ RUN yum -y install \
java-11-openjdk-devel \
make \
rpm-build \
- sudo
+ sudo \
+ ; yum clean all
# fix yum error after installing epel-release:
# Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org