2222jobs :
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 :
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
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