@@ -72,12 +72,62 @@ jobs:
7272 with :
7373 path : /home/runner/work/management-api-for-apache-cassandra/management-api-for-apache-cassandra/management-api-server/.cassandra-bin
7474 key : cassandra-download-${{ github.sha }}
75-
75+
76+ cassandra-tarball-cache :
77+ name : Setup Cassandra tarball cache
78+ runs-on : ubuntu-latest
79+ needs : run-unit-tests
80+ outputs :
81+ cassandraversion : ${{ steps.extract-cass-version.outputs.cassandraversion }}
82+ strategy :
83+ fail-fast : false
84+ max-parallel : 4
85+ matrix :
86+ cassandra-version : ['4.0', '4.1', '5.0']
87+ base-platform : ['ubi']
88+ steps :
89+ - name : Checkout repo
90+ uses : actions/checkout@v3
91+ - name : Restore build workspace
92+ uses : actions/cache/restore@v4
93+ with :
94+ path : /home/runner/work/management-api-for-apache-cassandra/management-api-for-apache-cassandra
95+ key : ${{ runner.os }}-workspace-${{ github.sha }}-${{ hashFiles('**/pom.xml') }}
96+ - name : Extract Version from Dockerfile
97+ id : extract-cass-version
98+ run : |
99+ CASSVER=$(grep -E '^ARG[[:space:]]+CASSANDRA_VERSION=' cassandra/Dockerfile-${{ matrix.cassandra-version }}.${{ matrix.base-platform }} | sed 's/^ARG[[:space:]]\+CASSANDRA_VERSION=//')
100+ echo "CASSANDRA_VERSION=$CASSVER" >> $GITHUB_ENV
101+ echo "cassandraversion=$CASSVER" >> $GITHUB_OUTPUT
102+ - name : Create Cassandra tarball cache directory
103+ run : |
104+ mkdir -p /home/runner/cassandra-tarball-cache
105+ - name : Restore Cassandra tarball cache
106+ uses : actions/cache/restore@v4
107+ with :
108+ path : /home/runner/cassandra-tarball-cache
109+ key : cassandra-tarball-cache-${{ matrix.cassandra-version }}
110+ - name : Download Cassandra Tarball ${{ matrix.cassandra-version }}
111+ run : |
112+ echo "Checking for Cassandra tarball version: $CASSANDRA_VERSION"
113+ TARBALL="/home/runner/cassandra-tarball-cache/apache-cassandra-${CASSANDRA_VERSION}-bin.tar.gz"
114+ if [ ! -f "$TARBALL" ]; then
115+ echo "Cassandra tarball not present. Downloading tarball: $TARBALL"
116+ curl -L "https://archive.apache.org/dist/cassandra/${CASSANDRA_VERSION}/apache-cassandra-${CASSANDRA_VERSION}-bin.tar.gz" -o "$TARBALL"
117+ else
118+ echo "Cassandra tarball already present in cache: $TARBALL"
119+ ls -l "$TARBALL"
120+ fi
121+ - name : Save Cassandra ${{ matrix.cassandra-version }} tarball cache
122+ uses : actions/cache/save@v4
123+ with :
124+ path : /home/runner/cassandra-tarball-cache
125+ key : cassandra-tarball-cache-${{ matrix.cassandra-version }}
76126
77127 build-oss-docker-images :
78128 name : Build Cassandra images
79129 runs-on : ubuntu-latest
80- needs : run-unit-tests
130+ needs : cassandra-tarball-cache
81131 strategy :
82132 fail-fast : false
83133 max-parallel : 8
@@ -93,6 +143,18 @@ jobs:
93143 with :
94144 path : /home/runner/work/management-api-for-apache-cassandra/management-api-for-apache-cassandra
95145 key : ${{ runner.os }}-workspace-${{ github.sha }}-${{ hashFiles('**/pom.xml') }}
146+ - name : Restore Cassandra tarball cache
147+ if : ${{ matrix.base-platform == 'ubi' }}
148+ uses : actions/cache/restore@v4
149+ with :
150+ path : /home/runner/cassandra-tarball-cache
151+ key : cassandra-tarball-cache-${{ matrix.cassandra-version }}
152+ - name : Copy Cassandra tarball
153+ if : ${{ matrix.base-platform == 'ubi' }}
154+ run : |
155+ echo "Copying Cassandra ${{ needs.cassandra-tarball-cache.outputs.cassandraversion }} tarball"
156+ cp /home/runner/cassandra-tarball-cache/apache-cassandra-${{ needs.cassandra-tarball-cache.outputs.cassandraversion }}-bin.tar.gz \
157+ /home/runner/work/management-api-for-apache-cassandra/management-api-for-apache-cassandra/
96158 - name : Set up JDK 11
97159 uses : actions/setup-java@v4
98160 with :
@@ -131,7 +193,7 @@ jobs:
131193 target : cassandra
132194 outputs : type=docker,dest=/tmp/cassandra.${{ matrix.cassandra-version }}.${{ matrix.base-platform }}.tar
133195 - name : Build Cassandra ${{ matrix.cassandra-version }}-${{ matrix.base-platform }}
134- if : ${{ matrix.base-platform != 'ubuntu ' }}
196+ if : ${{ matrix.base-platform == 'ubi ' }}
135197 id : docker_build_ubi
136198 uses : docker/build-push-action@v5
137199 with :
0 commit comments