Skip to content

Commit 52bc067

Browse files
SQUASH – add ability to check published releases too
1 parent f5a33a8 commit 52bc067

File tree

1 file changed

+51
-39
lines changed

1 file changed

+51
-39
lines changed

cassandra-release/cassandra-check-release.sh

Lines changed: 51 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
#!/bin/bash
22

33
# Parameters
4-
# $1 release
5-
# $2 maven artefacts url number (as specified in the vote email)
4+
# $1 staged|released
5+
# $2 release
6+
# $3 maven artefacts staging repo id (as specified in the repo url found in the vote email) (ignored for 'released')
67
#
7-
# Example use: `./cassandra-check-release.sh 4.0-beta3 1224
8+
# Example use: `./cassandra-check-release.sh staged 4.0-beta3 1224
89
#
910
# This script is very basic and experimental. I beg of you to help improve it.
1011
#
@@ -19,25 +20,35 @@ command -v md5sum >/dev/null 2>&1 || { echo >&2 "md5sum needs to be installed";
1920
command -v sha256sum >/dev/null 2>&1 || { echo >&2 "sha256sum needs to be installed"; exit 1; }
2021
command -v sha512sum >/dev/null 2>&1 || { echo >&2 "sha512sum needs to be installed"; exit 1; }
2122
command -v tar >/dev/null 2>&1 || { echo >&2 "tar needs to be installed"; exit 1; }
22-
command -v ant >/dev/null 2>&1 || { echo >&2 "ant needs to be installed"; exit 1; }
23-
command -v timeout >/dev/null 2>&1 || { echo >&2 "timeout needs to be installed"; exit 1; }
2423
command -v docker >/dev/null 2>&1 || { echo >&2 "docker needs to be installed"; exit 1; }
2524
(docker info >/dev/null 2>&1) || { echo >&2 "docker needs to running"; exit 1; }
26-
(java -version 2>&1 | grep -q "1.8") || { echo >&2 "Java 8 must be used"; exit 1; }
27-
(java -version 2>&1 | grep -iq jdk ) || { echo >&2 "Java JDK must be used"; exit 1; }
28-
(curl --output /dev/null --silent --head --fail "https://dist.apache.org/repos/dist/dev/cassandra/$1/") || { echo >&2 "Not Found: https://dist.apache.org/repos/dist/dev/cassandra/$1/"; exit 1; }
29-
(curl --output /dev/null --silent --head --fail "https://repository.apache.org/content/repositories/orgapachecassandra-$2/org/apache/cassandra/cassandra-all/$1") || { echo >&2 "Not Found: https://repository.apache.org/content/repositories/orgapachecassandra-$2/org/apache/cassandra/cassandra-all/$1"; exit 1; }
25+
26+
( [ "staged" = $1 ] || [ "released" = $1 ] ) || { echo >&2 "first argument must be staged or released"; exit 1; }
27+
( [ $# -ge 2 ] ) || { echo >&2 "minimum two arguments must be provided"; exit 1; }
28+
if [ -z "$3" ] ; then
29+
[ "released" == $1 ] || { echo >&2 "third argument must not be specified when first is released"; exit 1; }
30+
dist_url="https://dist.apache.org/repos/dist/release/cassandra/$2/"
31+
maven_repo_url="https://repository.apache.org/content/repositories/releases/org/apache/cassandra/cassandra-all/$2"
32+
packages_url="https://repo.aws.dsinternal.org/artifactory/apache-cassandra-"
33+
else
34+
[ "staged" == $1 ] || { echo >&2 "third argument must be specified when first is staged"; exit 1; }
35+
dist_url="https://dist.apache.org/repos/dist/dev/cassandra/$2/"
36+
maven_repo_url="https://repository.apache.org/content/repositories/orgapachecassandra-$3/org/apache/cassandra/cassandra-all/$2"
37+
packages_url="https://dist.apache.org/repos/dist/dev/cassandra/${2}/"
38+
fi
39+
(curl --output /dev/null --silent --head --fail "${dist_url}") || { echo >&2 "Not Found: ${dist_url}"; exit 1; }
40+
(curl --output /dev/null --silent --head --fail "${maven_repo_url}") || { echo >&2 "Not found: ${maven_repo_url}"; exit 1; }
3041

3142
###################
3243

33-
mkdir -p /tmp/$1
34-
cd /tmp/$1
44+
mkdir -p /tmp/$2
45+
cd /tmp/$2
3546
echo "Downloading KEYS"
3647
wget -q https://downloads.apache.org/cassandra/KEYS
37-
echo "Downloading https://repository.apache.org/content/repositories/orgapachecassandra-$2/org/apache/cassandra/cassandra-all/$1"
38-
wget -Nqnd -e robots=off --recursive --no-parent https://repository.apache.org/content/repositories/orgapachecassandra-$2/org/apache/cassandra/cassandra-all/$1
39-
echo "Downloading https://dist.apache.org/repos/dist/dev/cassandra/$1/"
40-
wget -Nqe robots=off --recursive --no-parent https://dist.apache.org/repos/dist/dev/cassandra/$1/
48+
echo "Downloading ${maven_repo_url}"
49+
wget -Nqnd -e robots=off --recursive --no-parent ${maven_repo_url}
50+
echo "Downloading ${dist_url}"
51+
wget -Nqe robots=off --recursive --no-parent ${dist_url}
4152

4253
echo
4354
echo "====== CHECK RESULTS ======"
@@ -51,7 +62,7 @@ for f in *.asc ; do gpg --verify $f ; done
5162
(compgen -G "*.jar" >/dev/null) || { echo >&2 "No *.jar files found in $(pwd)"; exit 1; }
5263
for f in *.pom *.jar *.asc ; do echo -n "sha1: " ; echo "$(cat $f.sha1) $f" | sha1sum -c ; echo -n "md5: " ; echo "$(cat $f.md5) $f" | md5sum -c ; done
5364

54-
cd dist.apache.org/repos/dist/dev/cassandra/$1
65+
cd dist.apache.org/repos/dist/*/cassandra/$2
5566
(compgen -G "*.asc" >/dev/null) || { echo >&2 "No *.asc files found in $(pwd)"; exit 1; }
5667
for f in *.asc ; do gpg --verify $f ; done
5768
(compgen -G "*.gz" >/dev/null) || { echo >&2 "No *.gz files found in $(pwd)"; exit 1; }
@@ -60,17 +71,18 @@ for f in *.asc ; do gpg --verify $f ; done
6071
for f in *.gz ; do echo -n "sha256: " ; echo "$(cat $f.sha256) $f" | sha256sum -c ; echo -n "sha512:" ; echo "$(cat $f.sha512) $f" | sha512sum -c ; done
6172

6273
echo
63-
rm -fR apache-cassandra-$1-src
64-
tar -xzf apache-cassandra-$1-src.tar.gz
65-
rm -fR apache-cassandra-$1
66-
tar -xzf apache-cassandra-$1-bin.tar.gz
74+
rm -fR apache-cassandra-$2-src
75+
tar -xzf apache-cassandra-$2-src.tar.gz
76+
rm -fR apache-cassandra-$2
77+
tar -xzf apache-cassandra-$2-bin.tar.gz
6778

6879
JDKS="8"
69-
if [[ $1 =~ [4]\. ]] ; then
80+
if [[ $2 =~ [4]\. ]] ; then
7081
JDKS=("8" "11")
71-
elif [[ $1 =~ [5]\. ]] ; then
82+
elif [[ $2 =~ [5]\. ]] ; then
7283
JDKS=("11" "17")
7384
fi
85+
TIMEOUT=2160
7486

7587
for JDK in ${JDKS[@]} ; do
7688

@@ -82,10 +94,10 @@ for JDK in ${JDKS[@]} ; do
8294
echo
8395
rm -f procfifo
8496
mkfifo procfifo
85-
docker run -i -v `pwd`/apache-cassandra-$1-src:/apache-cassandra-$1-src openjdk:${JDK}-jdk-slim-buster timeout 2160 /bin/bash -c "
97+
docker run -i -v `pwd`/apache-cassandra-$2-src:/apache-cassandra-$2-src openjdk:${JDK}-jdk-slim-buster timeout ${TIMEOUT} /bin/bash -c "
8698
( apt -qq update;
8799
apt -qq install -y ant build-essential git python procps ) 2>&1 >/dev/null;
88-
cd apache-cassandra-$1-src ;
100+
cd apache-cassandra-$2-src ;
89101
ant artifacts ${BUILD_OPT}" 2>&1 >procfifo &
90102

91103
PID=$!
@@ -108,10 +120,10 @@ for JDK in ${JDKS[@]} ; do
108120
echo
109121
rm -f procfifo
110122
mkfifo procfifo
111-
docker run -i -v `pwd`/apache-cassandra-$1:/apache-cassandra-$1 openjdk:${JDK}-jdk-slim-buster timeout 2160 /bin/bash -c "
123+
docker run -i -v `pwd`/apache-cassandra-$2:/apache-cassandra-$2 openjdk:${JDK}-jdk-slim-buster timeout ${TIMEOUT} /bin/bash -c "
112124
( apt -qq update;
113125
apt -qq install -y python python3 procps ) 2>&1 >/dev/null;
114-
apache-cassandra-$1/bin/cassandra -R -f" 2>&1 >procfifo &
126+
apache-cassandra-$2/bin/cassandra -R -f" 2>&1 >procfifo &
115127

116128
PID=$!
117129
success=false
@@ -138,7 +150,7 @@ for JDK in ${JDKS[@]} ; do
138150
echo
139151
rm -f procfifo
140152
mkfifo procfifo
141-
docker run -i -v `pwd`/debian:/debian ${DEBIAN_IMAGE} timeout 2160 /bin/bash -c "
153+
docker run -i -v `pwd`/debian:/debian ${DEBIAN_IMAGE} timeout ${TIMEOUT} /bin/bash -c "
142154
( apt -qq update ;
143155
apt -qq install -y python ; # will silently fail on debian latest
144156
apt -qq install -y python3 procps ;
@@ -163,20 +175,20 @@ for JDK in ${JDKS[@]} ; do
163175

164176
# test deb repository startup
165177

166-
idx=`expr index "$1" -`
178+
idx=`expr index "$2" -`
167179
if [ $idx -eq 0 ]
168180
then
169-
release_short=${1}
181+
release_short=${2}
170182
else
171-
release_short=${1:0:$((idx-1))}
183+
release_short=${2:0:$((idx-1))}
172184
fi
173185
debian_series="$(echo ${release_short} | cut -d '.' -f 1)$(echo ${release_short} | cut -d '.' -f 2)x"
174186

175187
echo
176188
rm -f procfifo
177189
mkfifo procfifo
178-
docker run -i ${DEBIAN_IMAGE} timeout 2160 /bin/bash -c "
179-
( echo 'deb https://dist.apache.org/repos/dist/dev/cassandra/${1}/debian ${debian_series} main' | tee -a /etc/apt/sources.list.d/cassandra.sources.list ;
190+
docker run -i ${DEBIAN_IMAGE} timeout ${TIMEOUT} /bin/bash -c "
191+
( echo 'deb ${packages_url}debian ${debian_series} main' | tee -a /etc/apt/sources.list.d/cassandra.sources.list ;
180192
apt -qq update ;
181193
apt -qq install -y curl gnupg2 ;
182194
apt-key adv --keyserver keyserver.ubuntu.com --recv-key E91335D77E3E87CB ;
@@ -207,13 +219,13 @@ for JDK in ${JDKS[@]} ; do
207219
fi
208220

209221
RH_DISTS="almalinux"
210-
if ! [[ $1 =~ [23]\. ]] ; then
211-
RH_DISTS=("almalinux" "centos:7")
222+
if ! [[ $2 =~ [23]\. ]] ; then
223+
RH_DISTS=("almalinux" "noboolean")
212224
fi
213225
for RH_DIST in ${RH_DISTS[@]} ; do
214226

215227
NOBOOLEAN_REPO=""
216-
if [ "$RH_DIST" == "centos:7" ] ; then
228+
if [ "$RH_DIST" == "noboolean" ] ; then
217229
NOBOOLEAN_REPO="/noboolean"
218230
fi
219231

@@ -222,9 +234,9 @@ for JDK in ${JDKS[@]} ; do
222234
echo
223235
rm -f procfifo
224236
mkfifo procfifo
225-
docker run -i -v `pwd`/redhat${NOBOOLEAN_REPO}:/redhat ${RH_DIST} timeout 2160 /bin/bash -c "
237+
docker run -i -v `pwd`/redhat${NOBOOLEAN_REPO}:/redhat almalinux timeout ${TIMEOUT} /bin/bash -c "
226238
( yum install -y procps-ng python3-pip;
227-
if [ "centos:7" == "$RH_DIST" ] && [ "java-17-openjdk-devel" == "$JDK_RH" ] ; then
239+
if [ "noboolean" == "$RH_DIST" ] && [ "java-17-openjdk-devel" == "$JDK_RH" ] ; then
228240
# centos7 doesn't have jdk17, so manual install ;
229241
curl https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm -o jdk-17_linux-x64_bin.rpm ;
230242
yum -y install ./jdk-17_linux-x64_bin.rpm ;
@@ -255,10 +267,10 @@ for JDK in ${JDKS[@]} ; do
255267
rm -f procfifo
256268
mkfifo procfifo
257269
# yum repo installation failing due to a legacy (SHA1) third-party sig in our KEYS file, hence use of update-crypto-policies. Impacts all rhel9+ users.
258-
docker run -i ${RH_DIST} timeout 2160 /bin/bash -c "(
270+
docker run -i almalinux timeout ${TIMEOUT} /bin/bash -c "(
259271
echo '[cassandra]' >> /etc/yum.repos.d/cassandra.repo ;
260272
echo 'name=Apache Cassandra' >> /etc/yum.repos.d/cassandra.repo ;
261-
echo 'baseurl=https://dist.apache.org/repos/dist/dev/cassandra/${1}/redhat${NOBOOLEAN_REPO}' >> /etc/yum.repos.d/cassandra.repo ;
273+
echo 'baseurl=${packages_url}redhat${NOBOOLEAN_REPO}' >> /etc/yum.repos.d/cassandra.repo ;
262274
echo 'gpgcheck=1' >> /etc/yum.repos.d/cassandra.repo ;
263275
echo 'repo_gpgcheck=1' >> /etc/yum.repos.d/cassandra.repo ;
264276
echo 'gpgkey=https://downloads.apache.org/cassandra/KEYS' >> /etc/yum.repos.d/cassandra.repo ;

0 commit comments

Comments
 (0)