Skip to content

Commit 5b77591

Browse files
committed
Fix the expansion of the Linux host arch matrix
1 parent fe7a90a commit 5b77591

File tree

2 files changed

+54
-29
lines changed

2 files changed

+54
-29
lines changed

.github/workflows/pull_request.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ jobs:
2626
with:
2727
# Linux
2828
linux_os_versions: '["jammy", "rhel-ubi9", "amazonlinux2"]'
29-
linux_host_archs: '["x86_64", "aarch64"]'
3029
linux_build_command: |
3130
cd tests/TestPackage
3231
swift build

.github/workflows/swift_package_test.yml

Lines changed: 54 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -302,25 +302,63 @@ jobs:
302302
run: ${{ inputs.ios_build_command }} ${{ (contains(matrix.swift_version, 'nightly') && inputs.swift_nightly_flags) || inputs.swift_flags }}
303303
timeout-minutes: 60
304304

305+
define-matrix:
306+
runs-on: ubuntu-latest
307+
outputs:
308+
matrix_json: ${{ steps.set-matrix.outputs.matrix_json }}
309+
steps:
310+
- id: set-matrix
311+
run: |
312+
SWIFTS=($(echo '${{ inputs.linux_swift_versions }}' | jq -r '.[]'))
313+
OSS=($(echo '${{ inputs.linux_os_versions }}' | jq -r '.[]'))
314+
ARCHES=($(echo '${{ inputs.linux_host_archs }}' | jq -r '.[]'))
315+
316+
MATRIX=()
317+
if [[ ${{ inputs.enable_linux_checks }} == true ]] ; then
318+
for s in "${SWIFTS[@]}"; do
319+
for o in "${OSS[@]}"; do
320+
for a in "${ARCHES[@]}"; do
321+
case $a in
322+
x86_64) runner="ubuntu-24.04" ;;
323+
aarch64) runner="ubuntu-24.04-arm" ;;
324+
*) runner="ubuntu-24.04" ;;
325+
esac
326+
MATRIX+=("$(jq -nc --arg s "$s" --arg o "$o" --arg a "$a" --arg r "$runner" \
327+
'{swift_version:$s,os_version:$o,arch:$a,runner:$r}')")
328+
done
329+
done
330+
done
331+
fi
332+
333+
# Combine array elements into JSON array
334+
MATRIX_JSON=$(printf '%s\n' "${MATRIX[@]}" | jq -s -c '.')
335+
echo "matrix_json=$MATRIX_JSON" >> $GITHUB_OUTPUT
336+
337+
test:
338+
needs: define-matrix
339+
runs-on: ${{ matrix.runner }}
340+
strategy:
341+
matrix: ${{ needs.define-matrix.outputs.matrix_json }}
342+
steps:
343+
- name: Debug
344+
run: echo ${{ fromJson(needs.define-matrix.outputs.matrix_json) }}
345+
346+
test2:
347+
needs: define-matrix
348+
runs-on: ${{ matrix.runner }}
349+
strategy:
350+
matrix: ${{ fromJson(needs.define-matrix.outputs.matrix_json) }}
351+
steps:
352+
- name: Debug
353+
run: echo ${{ fromJson(needs.define-matrix.outputs.matrix_json) }}
354+
305355
linux-build:
306356
name: Linux (${{ matrix.swift_version }} - ${{ matrix.os_version }} - ${{ matrix.arch }})
357+
needs: define-matrix
307358
runs-on: ${{ matrix.runner }}
308359
strategy:
309360
fail-fast: false
310-
matrix:
311-
swift_version: ${{ fromJson(inputs.linux_swift_versions) }}
312-
os_version: ${{ fromJson(inputs.linux_os_versions) }}
313-
arch: ${{ fromJson(inputs.linux_host_archs) }}
314-
exclude:
315-
- ${{ fromJson(inputs.linux_exclude_swift_versions) }}
316-
- ${{ fromJson((!inputs.enable_linux_checks && inputs.linux_swift_versions) || '[]') }}
317-
- ${{ fromJson((!inputs.enable_linux_checks && inputs.linux_os_versions) || '[]') }}
318-
- ${{ 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
361+
matrix: ${{ needs.define-matrix.outputs.matrix_json }}
324362
container:
325363
image: ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }}
326364
steps:
@@ -378,23 +416,11 @@ jobs:
378416

379417
linux-static-sdk-build:
380418
name: Static Linux Swift SDK Build (${{ matrix.swift_version }} - ${{ matrix.os_version }} - ${{ matrix.arch }})
419+
needs: define-matrix
381420
runs-on: ${{ matrix.runner }}
382421
strategy:
383422
fail-fast: false
384-
matrix:
385-
swift_version: ${{ fromJson(inputs.linux_static_sdk_versions) }}
386-
os_version: ${{ fromJson(inputs.linux_os_versions) }}
387-
arch: ${{ fromJson(inputs.linux_host_archs) }}
388-
exclude:
389-
- ${{ fromJson(inputs.linux_static_sdk_exclude_swift_versions) }}
390-
- ${{ fromJson((!inputs.enable_linux_static_sdk_build && inputs.linux_static_sdk_versions) || '[]') }}
391-
- ${{ fromJson((!inputs.enable_linux_static_sdk_build && inputs.linux_os_versions) || '[]') }}
392-
- ${{ 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
423+
matrix: ${{ needs.define-matrix.outputs.matrix_json }}
398424
container:
399425
image: ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }}
400426
steps:

0 commit comments

Comments
 (0)