Skip to content

Commit 4783826

Browse files
authored
Run tests on musl aarch64 (#190)
* Cache JDK for aarch64/musl * Run tests on aarch64/musl
1 parent b02f0ad commit 4783826

5 files changed

Lines changed: 396 additions & 237 deletions

File tree

.github/scripts/java_setup.sh

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,12 @@ function prepareJdk() {
1111
mkdir -p ${target_path}
1212

1313
if [[ ${qualifier} == "librca" ]] && [[ "${arch}" =~ "-musl" ]]; then
14-
URL_VAR="JAVA_${version}_MUSL_URL"
14+
local osarch="${arch%-musl}"
15+
local suffix=
16+
if [[ "${osarch}" == "aarch64" ]]; then
17+
suffix="AARCH64_"
18+
fi
19+
URL_VAR="JAVA_${version}_MUSL_${suffix}URL"
1520
URL="${!URL_VAR}"
1621
if [[ -z "${URL}" ]]; then
1722
echo "Musl/Liberica JDK URL not found for ${arch}/${variant}"
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#! /bin/sh
2+
3+
set -e
4+
5+
export KEEP_JFRS=true
6+
export TEST_COMMIT="${1}"
7+
export TEST_CONFIGURATION="${2}"
8+
export LIBRARY="musl"
9+
export CONFIG="${3}"
10+
export JAVA_HOME="${4}"
11+
export JAVA_TEST_HOME="${5}"
12+
13+
export PATH="${JAVA_HOME}/bin":${PATH}
14+
15+
# due to env hell in GHA containers, we need to re-do the logic from Extract Versions here
16+
JAVA_VERSION=$("${JAVA_TEST_HOME}/bin/java" -version 2>&1 | awk -F '"' '/version/ {
17+
split($2, v, "[._]");
18+
if (v[1] == "1") {
19+
# Java 8 or older: Include major, minor, and update
20+
printf "%s.%s.%s\n", v[2], v[3], v[4]
21+
} else {
22+
# Java 9 or newer: Major, minor, and patch
23+
printf "%s.%s.%s\n", v[1], v[2], v[3]
24+
}
25+
}')
26+
export JAVA_VERSION
27+
28+
apk update && apk add curl moreutils wget hexdump linux-headers bash make g++ clang git cppcheck jq cmake gtest-dev gmock tar >/dev/null
29+
30+
./gradlew -PCI -PkeepJFRs :ddprof-test:test${CONFIG} --no-daemon --parallel --build-cache --no-watch-fs

.github/workflows/cache_java.yml

Lines changed: 57 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,15 @@ env:
4646
JAVA_21_ZING_AARCH64_URL: "https://cdn.azul.com/zing-zvm/ZVM24.10.0.0/zing24.10.0.0-4-jdk21.0.4.0.101-linux_aarch64.tar.gz"
4747

4848
JAVA_8_MUSL_URL : "https://download.bell-sw.com/java/8u442+7/bellsoft-jdk8u442+7-linux-x64-musl-lite.tar.gz"
49+
JAVA_8_MUSL_AARCH64_URL: "https://download.bell-sw.com/java/8u442+7/bellsoft-jdk8u442+7-linux-aarch64-musl.tar.gz"
4950
JAVA_11_MUSL_URL: "https://download.bell-sw.com/java/11.0.26+9/bellsoft-jdk11.0.26+9-linux-x64-musl-lite.tar.gz"
51+
JAVA_11_MUSL_AARCH64_URL: "https://download.bell-sw.com/java/11.0.26+9/bellsoft-jdk11.0.26+9-linux-aarch64-musl-lite.tar.gz"
5052
JAVA_17_MUSL_URL: "https://download.bell-sw.com/java/17.0.14+10/bellsoft-jdk17.0.14+10-linux-x64-musl-lite.tar.gz"
53+
JAVA_17_MUSL_AARCH64_URL: "https://download.bell-sw.com/java/17.0.14+10/bellsoft-jdk17.0.14+10-linux-aarch64-musl-lite.tar.gz"
5154
JAVA_21_MUSL_URL: "https://download.bell-sw.com/java/21.0.6+10/bellsoft-jdk21.0.6+10-linux-x64-musl-lite.tar.gz"
55+
JAVA_21_MUSL_AARCH64_URL: "https://download.bell-sw.com/java/21.0.6+10/bellsoft-jdk21.0.6+10-linux-aarch64-musl-lite.tar.gz"
5256
JAVA_23_MUSL_URL: "https://download.bell-sw.com/java/23.0.2+9/bellsoft-jdk23.0.2+9-linux-x64-musl-lite.tar.gz"
57+
JAVA_23_MUSL_AARCH64_URL: "https://download.bell-sw.com/java/23.0.2+9/bellsoft-jdk23.0.2+9-linux-aarch64-musl-lite.tar.gz"
5358

5459
permissions:
5560
contents: read
@@ -192,7 +197,7 @@ jobs:
192197
cache-amd64-musl:
193198
runs-on: ubuntu-latest
194199
container:
195-
image: "alpine:3.14"
200+
image: "alpine:3.21"
196201
options: --cpus 2
197202
strategy:
198203
fail-fast: true
@@ -210,7 +215,7 @@ jobs:
210215
with:
211216
path: |
212217
${{ env.JDKS_DIR }}/jdk${{ matrix.java_variant }}
213-
key: jdk${{matrix.java_variant }}-amd64-musl--${{ hashFiles('.github/workflows/cache_java.yml') }}
218+
key: jdk${{matrix.java_variant }}-amd64-musl--${{ hashFiles('.github/workflows/cache_java.yml', '.github/scripts/java_setup.sh') }}
214219

215220
- name: Is JDK cached?
216221
id: check-cache
@@ -235,7 +240,7 @@ jobs:
235240
with:
236241
path: |
237242
${{ env.JDKS_DIR }}/jdk${{ matrix.java_variant }}
238-
key: jdk${{matrix.java_variant }}-amd64-musl--${{ hashFiles('.github/workflows/cache_java.yml') }}
243+
key: jdk${{matrix.java_variant }}-amd64-musl--${{ hashFiles('.github/workflows/cache_java.yml', '.github/scripts/java_setup.sh') }}
239244

240245
cache-aarch64:
241246
needs: setup-sdkman-aarch64
@@ -254,7 +259,7 @@ jobs:
254259
with:
255260
path: |
256261
${{ env.JDKS_DIR }}/jdk${{ matrix.java_variant }}
257-
key: jdk${{matrix.java_variant }}-aarch64--${{ hashFiles('.github/workflows/cache_java.yml') }}
262+
key: jdk${{matrix.java_variant }}-aarch64--${{ hashFiles('.github/workflows/cache_java.yml', '.github/scripts/java_setup.sh') }}
258263
- name: Is JDK cached?
259264
id: check-cache
260265
run: |
@@ -291,4 +296,51 @@ jobs:
291296
with:
292297
path: |
293298
${{ env.JDKS_DIR }}/jdk${{ matrix.java_variant }}
294-
key: jdk${{matrix.java_variant }}-aarch64--${{ hashFiles('.github/workflows/cache_java.yml') }}
299+
key: jdk${{matrix.java_variant }}-aarch64--${{ hashFiles('.github/workflows/cache_java.yml', '.github/scripts/java_setup.sh') }}
300+
301+
cache-aarch64-musl:
302+
runs-on:
303+
group: ARM LINUX SHARED
304+
labels: arm-4core-linux-ubuntu24.04
305+
strategy:
306+
fail-fast: true
307+
matrix:
308+
java_variant: [ "8-librca", "11-librca", "17-librca", "21-librca", "23-librca" ]
309+
steps:
310+
- uses: actions/checkout@v3
311+
- name: Setup OS
312+
run: |
313+
# This needs to be done early because alpine does not have bash and tar is also iffy
314+
sudo apt update && sudo apt install -y curl zip unzip bash tar
315+
- name: Cache JDK ${{ matrix.java_variant }}
316+
id: cache-jdk
317+
uses: actions/cache/restore@v4
318+
with:
319+
path: |
320+
${{ env.JDKS_DIR }}/jdk${{ matrix.java_variant }}
321+
key: jdk${{matrix.java_variant }}-aarch64-musl--${{ hashFiles('.github/workflows/cache_java.yml', '.github/scripts/java_setup.sh') }}
322+
323+
- name: Is JDK cached?
324+
id: check-cache
325+
run: |
326+
if [ -d "jdks" ]; then
327+
echo "cache-hit=true" >> $GITHUB_OUTPUT
328+
else
329+
echo "cache-hit=false" >> $GITHUB_OUTPUT
330+
fi
331+
332+
- name: Install JDK ${{ matrix.java_variant }}
333+
if: steps.check-cache.outputs.cache-hit != 'true'
334+
shell: bash
335+
run: |
336+
source .github/scripts/java_setup.sh
337+
338+
prepareJdk ${{ matrix.java_variant }} aarch64-musl
339+
340+
- name: Save JDK ${{ matrix.java_variant }} cache
341+
if: steps.check-cache.outputs.cache-hit != 'true'
342+
uses: actions/cache/save@v4
343+
with:
344+
path: |
345+
${{ env.JDKS_DIR }}/jdk${{ matrix.java_variant }}
346+
key: jdk${{matrix.java_variant }}-aarch64-musl--${{ hashFiles('.github/workflows/cache_java.yml', '.github/scripts/java_setup.sh') }}

0 commit comments

Comments
 (0)