@@ -302,9 +302,29 @@ 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-linux-matrix :
306+ runs-on : ubuntu-latest
307+ outputs :
308+ runner_map : ${{ steps.runners.outputs.runners }}
309+ steps :
310+ - name : Define Linux Runners
311+ id : runners
312+ run : |
313+ archs='${{ inputs.linux_host_archs }}'
314+ full_map='{
315+ "x86_64": "ubuntu-24.04",
316+ "aarch64": "ubuntu-24.04-arm",
317+ }'
318+ # Build dynamic map for only selected archs
319+ runner_map=$(jq -c --argjson archs "$archs" --argjson full "$full_map" '
320+ reduce $archs[] as $a ({}; .[$a] = $full[$a])
321+ ' <<< '{}')
322+ echo "runner_map=$runner_map" >> $GITHUB_OUTPUT
323+
305324 linux-build :
306325 name : Linux (${{ matrix.swift_version }} - ${{ matrix.os_version }} - ${{ matrix.arch }})
307- runs-on : ${{ matrix.runner }}
326+ needs : define-linux-matrix
327+ runs-on : ${{ fromJson(needs.define-linux-matrix.outputs.runner_map)[matrix.arch] }}
308328 strategy :
309329 fail-fast : false
310330 matrix :
@@ -316,11 +336,6 @@ jobs:
316336 - ${{ fromJson((!inputs.enable_linux_checks && inputs.linux_swift_versions) || '[]') }}
317337 - ${{ fromJson((!inputs.enable_linux_checks && inputs.linux_os_versions) || '[]') }}
318338 - ${{ 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
324339 container :
325340 image : ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }}
326341 steps :
@@ -378,7 +393,8 @@ jobs:
378393
379394 linux-static-sdk-build :
380395 name : Static Linux Swift SDK Build (${{ matrix.swift_version }} - ${{ matrix.os_version }} - ${{ matrix.arch }})
381- runs-on : ${{ matrix.runner }}
396+ needs : define-linux-matrix
397+ runs-on : ${{ fromJson(needs.define-linux-matrix.outputs.runner_map)[matrix.arch] }}
382398 strategy :
383399 fail-fast : false
384400 matrix :
@@ -390,11 +406,6 @@ jobs:
390406 - ${{ fromJson((!inputs.enable_linux_static_sdk_build && inputs.linux_static_sdk_versions) || '[]') }}
391407 - ${{ fromJson((!inputs.enable_linux_static_sdk_build && inputs.linux_os_versions) || '[]') }}
392408 - ${{ 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
398409 container :
399410 image : ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }}
400411 steps :
0 commit comments