Skip to content

Commit 4386e54

Browse files
committed
Fix the expansion of the Linux host arch matrix
1 parent fe7a90a commit 4386e54

2 files changed

Lines changed: 41 additions & 12 deletions

File tree

.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: 41 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,11 @@ on:
5353
linux_host_archs:
5454
type: string
5555
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\"}]"
5761
linux_static_sdk_versions:
5862
type: string
5963
description: "Static Linux Swift SDK version list (JSON)"
@@ -302,25 +306,53 @@ jobs:
302306
run: ${{ inputs.ios_build_command }} ${{ (contains(matrix.swift_version, 'nightly') && inputs.swift_nightly_flags) || inputs.swift_flags }}
303307
timeout-minutes: 60
304308

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+
SWIFTS=($(echo '${{ github.event.inputs.linux_swift_versions }}' | jq -r '.[]'))
317+
OSS=($(echo '${{ github.event.inputs.linux_os_versions }}' | jq -r '.[]'))
318+
ARCHES=($(echo '${{ github.event.inputs.linux_host_archs }}' | jq -r '.[]'))
319+
320+
MATRIX=()
321+
for s in "${SWIFTS[@]}"; do
322+
for o in "${OSS[@]}"; do
323+
for a in "${ARCHES[@]}"; do
324+
case $a in
325+
x86_64) runner="ubuntu-24.04" ;;
326+
aarch64) runner="ubuntu-24.04-arm" ;;
327+
*) runner="ubuntu-24.04" ;;
328+
esac
329+
MATRIX+=("$(jq -nc --arg s "$s" --arg o "$o" --arg a "$a" --arg r "$runner" \
330+
'{swift_version:$s,os_version:$o,arch:$a,runner:$r}')")
331+
done
332+
done
333+
done
334+
335+
# Combine array elements into JSON array
336+
MATRIX_JSON=$(jq -nc '$ARGS.positional' --args "${MATRIX[@]}")
337+
echo "matrix_json=$MATRIX_JSON" >> $GITHUB_OUTPUT
338+
305339
linux-build:
306340
name: Linux (${{ matrix.swift_version }} - ${{ matrix.os_version }} - ${{ matrix.arch }})
341+
needs: define-matrix
307342
runs-on: ${{ matrix.runner }}
308343
strategy:
309344
fail-fast: false
310345
matrix:
311346
swift_version: ${{ fromJson(inputs.linux_swift_versions) }}
312347
os_version: ${{ fromJson(inputs.linux_os_versions) }}
313348
arch: ${{ fromJson(inputs.linux_host_archs) }}
349+
include: ${{ fromJson(needs.define-matrix.outputs.matrix_json) }}
314350
exclude:
315351
- ${{ fromJson(inputs.linux_exclude_swift_versions) }}
352+
- ${{ fromJson(inputs.linux_exclude_host_archs) }}
316353
- ${{ fromJson((!inputs.enable_linux_checks && inputs.linux_swift_versions) || '[]') }}
317354
- ${{ fromJson((!inputs.enable_linux_checks && inputs.linux_os_versions) || '[]') }}
318355
- ${{ 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
324356
container:
325357
image: ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }}
326358
steps:
@@ -378,23 +410,21 @@ jobs:
378410

379411
linux-static-sdk-build:
380412
name: Static Linux Swift SDK Build (${{ matrix.swift_version }} - ${{ matrix.os_version }} - ${{ matrix.arch }})
413+
needs: define-matrix
381414
runs-on: ${{ matrix.runner }}
382415
strategy:
383416
fail-fast: false
384417
matrix:
385418
swift_version: ${{ fromJson(inputs.linux_static_sdk_versions) }}
386419
os_version: ${{ fromJson(inputs.linux_os_versions) }}
387420
arch: ${{ fromJson(inputs.linux_host_archs) }}
421+
include: ${{ fromJson(needs.define-matrix.outputs.matrix_json) }}
388422
exclude:
389423
- ${{ fromJson(inputs.linux_static_sdk_exclude_swift_versions) }}
424+
- ${{ fromJson(inputs.linux_exclude_host_archs) }}
390425
- ${{ fromJson((!inputs.enable_linux_static_sdk_build && inputs.linux_static_sdk_versions) || '[]') }}
391426
- ${{ fromJson((!inputs.enable_linux_static_sdk_build && inputs.linux_os_versions) || '[]') }}
392427
- ${{ 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
398428
container:
399429
image: ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }}
400430
steps:

0 commit comments

Comments
 (0)