Skip to content

Commit 2d26bfc

Browse files
committed
use matrix for ndks
1 parent 5ba223a commit 2d26bfc

File tree

1 file changed

+38
-83
lines changed

1 file changed

+38
-83
lines changed

.github/workflows/build_and_test.yml

Lines changed: 38 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,18 @@ on:
2222
jobs:
2323
build:
2424
runs-on: ubuntu-latest
25+
strategy:
26+
matrix:
27+
include:
28+
- variant: ndk27
29+
ndk-version: '27.1.12297006'
30+
- variant: ndk28c
31+
ndk-version: '28.2.13676358'
32+
- variant: ndk29
33+
ndk-version: '29.0.14206865'
2534
env:
2635
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.GPG_SIGNING_KEY }}
2736
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.GPG_SIGNING_PASSWORD }}
28-
NDK_VERSION_27: '27.1.12297006'
29-
NDK_VERSION_28: '28.2.13676358'
30-
NDK_VERSION_29: '29.0.14206865'
3137
BUILD_CACHE_VERSION: v1
3238

3339
steps:
@@ -58,13 +64,9 @@ jobs:
5864
uses: actions/cache@v4
5965
with:
6066
path: |
61-
dist-ndk27
62-
dist-ndk27.unstripped
63-
dist-ndk28
64-
dist-ndk28.unstripped
65-
dist-ndk29
66-
dist-ndk29.unstripped
67-
key: jsc-dist-${{ env.BUILD_CACHE_VERSION }}-${{ steps.build-hash.outputs.hash }}
67+
dist-${{ matrix.variant }}
68+
dist-${{ matrix.variant }}.unstripped
69+
key: jsc-dist-${{ env.BUILD_CACHE_VERSION }}-${{ matrix.variant }}-${{ steps.build-hash.outputs.hash }}
6870

6971
- name: Restore WebKit sources
7072
id: cache-download
@@ -86,9 +88,9 @@ jobs:
8688
uses: actions/cache@v4
8789
with:
8890
path: ~/.cache/ccache
89-
key: ccache-${{ env.BUILD_CACHE_VERSION }}-${{ runner.os }}-${{ env.NDK_VERSION_27 }}-${{ env.NDK_VERSION_28 }}-${{ env.NDK_VERSION_29 }}-${{ steps.build-hash.outputs.hash }}
91+
key: ccache-${{ env.BUILD_CACHE_VERSION }}-${{ runner.os }}-${{ matrix.variant }}-${{ matrix.ndk-version }}-${{ steps.build-hash.outputs.hash }}
9092
restore-keys: |
91-
ccache-${{ env.BUILD_CACHE_VERSION }}-${{ runner.os }}-${{ env.NDK_VERSION_27 }}-${{ env.NDK_VERSION_28 }}-${{ env.NDK_VERSION_29 }}-
93+
ccache-${{ env.BUILD_CACHE_VERSION }}-${{ runner.os }}-${{ matrix.variant }}-${{ matrix.ndk-version }}-
9294
9395
- name: Configure ccache
9496
run: |
@@ -99,45 +101,26 @@ jobs:
99101
fi
100102
shell: bash
101103

102-
- name: Cache Android NDK r27
103-
id: cache-ndk-27
104+
- name: Cache Android NDK
105+
id: cache-ndk
104106
uses: actions/cache@v4
105107
with:
106-
path: ${{ env.ANDROID_HOME }}/ndk/${{ env.NDK_VERSION_27 }}
107-
key: android-ndk-${{ runner.os }}-${{ env.NDK_VERSION_27 }}
108-
109-
- name: Cache Android NDK r28
110-
id: cache-ndk-28
111-
uses: actions/cache@v4
112-
with:
113-
path: ${{ env.ANDROID_HOME }}/ndk/${{ env.NDK_VERSION_28 }}
114-
key: android-ndk-${{ runner.os }}-${{ env.NDK_VERSION_28 }}
115-
116-
- name: Cache Android NDK r29
117-
id: cache-ndk-29
118-
uses: actions/cache@v4
119-
with:
120-
path: ${{ env.ANDROID_HOME }}/ndk/${{ env.NDK_VERSION_29 }}
121-
key: android-ndk-${{ runner.os }}-${{ env.NDK_VERSION_29 }}
108+
path: ${{ env.ANDROID_HOME }}/ndk/${{ matrix.ndk-version }}
109+
key: android-ndk-${{ runner.os }}-${{ matrix.ndk-version }}
122110

123111
- name: Install Android packages
124112
run: |
125113
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools
126114
yes | sdkmanager --licenses || true
127115
sdkmanager "cmake;3.22.1"
128-
for version in "${NDK_VERSION_27}" "${NDK_VERSION_28}" "${NDK_VERSION_29}"; do
129-
if [[ -z "$version" ]]; then
130-
continue
131-
fi
132-
if [[ ! -d "${ANDROID_HOME}/ndk/${version}" ]]; then
133-
sdkmanager "ndk;${version}"
134-
fi
135-
UNICODE_DIR="${ANDROID_HOME}/ndk/${version}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/unicode"
136-
if [[ -d "${UNICODE_DIR}" ]]; then
137-
mv "${UNICODE_DIR}" "${UNICODE_DIR}2"
138-
fi
139-
done
140-
echo "ANDROID_NDK=$ANDROID_HOME/ndk/${NDK_VERSION_27}" >> $GITHUB_ENV
116+
if [[ ! -d "${ANDROID_HOME}/ndk/${{ matrix.ndk-version }}" ]]; then
117+
sdkmanager "ndk;${{ matrix.ndk-version }}"
118+
fi
119+
UNICODE_DIR="${ANDROID_HOME}/ndk/${{ matrix.ndk-version }}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/unicode"
120+
if [[ -d "${UNICODE_DIR}" ]]; then
121+
mv "${UNICODE_DIR}" "${UNICODE_DIR}2"
122+
fi
123+
echo "ANDROID_NDK=$ANDROID_HOME/ndk/${{ matrix.ndk-version }}" >> $GITHUB_ENV
141124
echo "PATH=$PATH" >> $GITHUB_ENV
142125
shell: bash
143126

@@ -158,32 +141,9 @@ jobs:
158141

159142
- name: Build
160143
if: steps.cache-dist.outputs.cache-hit != 'true'
161-
run: |
162-
variants=(ndk27 ndk28c ndk29)
163-
for variant in "${variants[@]}"; do
164-
case "$variant" in
165-
ndk27)
166-
export ANDROID_NDK="$ANDROID_HOME/ndk/${NDK_VERSION_27}"
167-
;;
168-
ndk28c)
169-
export ANDROID_NDK="$ANDROID_HOME/ndk/${NDK_VERSION_28}"
170-
;;
171-
ndk29)
172-
export ANDROID_NDK="$ANDROID_HOME/ndk/${NDK_VERSION_29}"
173-
;;
174-
*)
175-
echo "Unknown variant $variant" >&2
176-
exit 1
177-
esac
178-
179-
if [[ ! -d "$ANDROID_NDK" ]]; then
180-
echo "Android NDK not found at $ANDROID_NDK for variant $variant" >&2
181-
exit 1
182-
fi
183-
184-
export JSC_NDK_VARIANT="$variant"
185-
yarn start
186-
done
144+
env:
145+
JSC_NDK_VARIANT: ${{ matrix.variant }}
146+
run: yarn start
187147
shell: bash
188148

189149
- name: Show ccache stats
@@ -198,24 +158,17 @@ jobs:
198158
run: |
199159
rm -rf archive
200160
mkdir -p archive
201-
shopt -s nullglob
202-
found=0
203-
for dir in dist-ndk*; do
204-
if [[ -d "$dir" ]]; then
205-
cp -R "$dir" archive/
206-
found=1
207-
fi
208-
done
209-
shopt -u nullglob
210-
if [[ $found -eq 0 ]]; then
211-
echo "No distribution directories were produced." >&2
161+
if [[ -d "dist-${{ matrix.variant }}" ]]; then
162+
cp -R "dist-${{ matrix.variant }}" archive/
163+
else
164+
echo "Distribution directory dist-${{ matrix.variant }} was not produced." >&2
212165
exit 1
213166
fi
214167
shell: bash
215168

216169
- uses: actions/upload-artifact@v4
217170
with:
218-
name: archive
171+
name: archive-${{ matrix.variant }}
219172
path: archive
220173

221174

@@ -242,8 +195,9 @@ jobs:
242195

243196
- uses: actions/download-artifact@v4
244197
with:
245-
name: archive
198+
pattern: archive-*
246199
path: archive
200+
merge-multiple: true
247201

248202
- name: Extract archive
249203
run: |
@@ -330,8 +284,9 @@ jobs:
330284

331285
- uses: actions/download-artifact@v4
332286
with:
333-
name: archive
287+
pattern: archive-*
334288
path: archive
289+
merge-multiple: true
335290

336291
- name: Install dependencies
337292
run: yarn install --frozen-lockfile

0 commit comments

Comments
 (0)