|
53 | 53 | linux_host_archs: |
54 | 54 | type: string |
55 | 55 | description: "Linux arch list (JSON)" |
56 | | - default: "[\"x86_64\"]" |
| 56 | + default: "[\"x86_64\", \"aarch64\"]" |
| 57 | + linux_exclude_host_archs: |
| 58 | + type: string |
| 59 | + description: "Exclude Linux arch list (JSON)" |
| 60 | + default: "[{\"arch\": \"aarch64\"}]" |
57 | 61 | linux_static_sdk_versions: |
58 | 62 | type: string |
59 | 63 | description: "Static Linux Swift SDK version list (JSON)" |
@@ -302,25 +306,47 @@ jobs: |
302 | 306 | run: ${{ inputs.ios_build_command }} ${{ (contains(matrix.swift_version, 'nightly') && inputs.swift_nightly_flags) || inputs.swift_flags }} |
303 | 307 | timeout-minutes: 60 |
304 | 308 |
|
| 309 | + define-matrix: |
| 310 | + runs-on: ubuntu-latest |
| 311 | + outputs: |
| 312 | + matrix_json: ${{ steps.set-matrix.outputs.matrix_json }} |
| 313 | + steps: |
| 314 | + - id: set-matrix |
| 315 | + run: | |
| 316 | + ARCHES=($(echo '${{ github.event.inputs.linux_host_archs }}' | jq -r '.[]')) |
| 317 | +
|
| 318 | + MATRIX=() |
| 319 | + for a in "${ARCHES[@]}"; do |
| 320 | + case $a in |
| 321 | + x86_64) runner="ubuntu-24.04" ;; |
| 322 | + aarch64) runner="ubuntu-24.04-arm" ;; |
| 323 | + *) runner="ubuntu-24.04" ;; |
| 324 | + esac |
| 325 | + MATRIX+=("$(jq -nc --arg s "$s" --arg o "$o" --arg a "$a" --arg r "$runner" \ |
| 326 | + '{arch:$a,runner:$r}')") |
| 327 | + done |
| 328 | +
|
| 329 | + # Combine array elements into JSON array |
| 330 | + MATRIX_JSON=$(jq -nc '$ARGS.positional' --args "${MATRIX[@]}") |
| 331 | + echo "matrix_json=$MATRIX_JSON" >> $GITHUB_OUTPUT |
| 332 | +
|
305 | 333 | linux-build: |
306 | 334 | name: Linux (${{ matrix.swift_version }} - ${{ matrix.os_version }} - ${{ matrix.arch }}) |
| 335 | + needs: define-matrix |
307 | 336 | runs-on: ${{ matrix.runner }} |
308 | 337 | strategy: |
309 | 338 | fail-fast: false |
310 | 339 | matrix: |
311 | 340 | swift_version: ${{ fromJson(inputs.linux_swift_versions) }} |
312 | 341 | os_version: ${{ fromJson(inputs.linux_os_versions) }} |
313 | 342 | arch: ${{ fromJson(inputs.linux_host_archs) }} |
| 343 | + include: ${{ fromJson(needs.define-matrix.outputs.matrix_json) }} |
314 | 344 | exclude: |
315 | 345 | - ${{ fromJson(inputs.linux_exclude_swift_versions) }} |
| 346 | + - ${{ fromJson(inputs.linux_exclude_host_archs) }} |
316 | 347 | - ${{ fromJson((!inputs.enable_linux_checks && inputs.linux_swift_versions) || '[]') }} |
317 | 348 | - ${{ fromJson((!inputs.enable_linux_checks && inputs.linux_os_versions) || '[]') }} |
318 | 349 | - ${{ fromJson((!inputs.enable_linux_checks && inputs.linux_host_archs) || '[]') }} |
319 | | - include: |
320 | | - - arch: x86_64 |
321 | | - runner: ubuntu-24.04 |
322 | | - - arch: aarch64 |
323 | | - runner: ubuntu-24.04-arm |
324 | 350 | container: |
325 | 351 | image: ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }} |
326 | 352 | steps: |
@@ -378,23 +404,21 @@ jobs: |
378 | 404 |
|
379 | 405 | linux-static-sdk-build: |
380 | 406 | name: Static Linux Swift SDK Build (${{ matrix.swift_version }} - ${{ matrix.os_version }} - ${{ matrix.arch }}) |
| 407 | + needs: define-matrix |
381 | 408 | runs-on: ${{ matrix.runner }} |
382 | 409 | strategy: |
383 | 410 | fail-fast: false |
384 | 411 | matrix: |
385 | 412 | swift_version: ${{ fromJson(inputs.linux_static_sdk_versions) }} |
386 | 413 | os_version: ${{ fromJson(inputs.linux_os_versions) }} |
387 | 414 | arch: ${{ fromJson(inputs.linux_host_archs) }} |
| 415 | + include: ${{ fromJson(needs.define-matrix.outputs.matrix_json) }} |
388 | 416 | exclude: |
389 | 417 | - ${{ fromJson(inputs.linux_static_sdk_exclude_swift_versions) }} |
| 418 | + - ${{ fromJson(inputs.linux_exclude_host_archs) }} |
390 | 419 | - ${{ fromJson((!inputs.enable_linux_static_sdk_build && inputs.linux_static_sdk_versions) || '[]') }} |
391 | 420 | - ${{ fromJson((!inputs.enable_linux_static_sdk_build && inputs.linux_os_versions) || '[]') }} |
392 | 421 | - ${{ fromJson((!inputs.enable_linux_static_sdk_build && inputs.linux_host_archs) || '[]') }} |
393 | | - include: |
394 | | - - arch: x86_64 |
395 | | - runner: ubuntu-24.04 |
396 | | - - arch: aarch64 |
397 | | - runner: ubuntu-24.04-arm |
398 | 422 | container: |
399 | 423 | image: ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }} |
400 | 424 | steps: |
|
0 commit comments