Skip to content

Commit 4a2771b

Browse files
committed
Fix error annotations
The previous method of excluding matrix entries results in complaints annotating the action run (even though the matrix produces the correct entries and _works_), but this noise gets in the way of real errors and may be bothersome. Use a new technique (which amusingly is even simpler) to skip the whole matrix when the enabled flag is off for a group of builds.
1 parent 20b826e commit 4a2771b

File tree

1 file changed

+65
-24
lines changed

1 file changed

+65
-24
lines changed

.github/workflows/swift_package_test.yml

Lines changed: 65 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -224,20 +224,38 @@ on:
224224
default: false
225225

226226
jobs:
227+
generate:
228+
name: ''
229+
runs-on: ubuntu-latest
230+
outputs:
231+
enable_macos_checks: "false"
232+
enable_ios_checks: "false"
233+
enable_linux_checks: "false"
234+
enable_linux_static_sdk_build: "false"
235+
enable_wasm_sdk_build: "false"
236+
enable_embedded_wasm_sdk_build: "false"
237+
enable_android_sdk_build: "false"
238+
enable_windows_checks: "false"
239+
steps:
240+
- name: Generate
241+
run: echo
242+
227243
macos-build:
228244
name: macOS (Xcode ${{ matrix.xcode_version }} - ${{ matrix.os_version }} - ${{ matrix.arch }})
245+
needs: generate
246+
if: ${{ needs.generate.outputs.enable_macos_checks }}
229247
runs-on: [self-hosted, macos, "${{ matrix.os_version }}", "${{ matrix.arch }}"]
230248
strategy:
231249
fail-fast: false
232250
matrix:
251+
matrix_enabled:
252+
- ${{ inputs.enable_macos_checks }}
233253
xcode_version: ${{ fromJson(inputs.macos_xcode_versions) }}
234254
os_version: ${{ fromJson(inputs.macos_versions) }}
235255
arch: ${{ fromJson(inputs.macos_archs) }}
236256
exclude:
237257
- ${{ fromJson(inputs.macos_exclude_xcode_versions) }}
238-
- ${{ fromJson((!inputs.enable_macos_checks && inputs.macos_xcode_versions) || '[]') }}
239-
- ${{ fromJson((!inputs.enable_macos_checks && inputs.macos_versions) || '[]') }}
240-
- ${{ fromJson((!inputs.enable_macos_checks && inputs.macos_archs) || '[]') }}
258+
- matrix_enabled: false
241259
steps:
242260
- name: Checkout repository
243261
uses: actions/checkout@v4
@@ -266,18 +284,20 @@ jobs:
266284

267285
ios-build:
268286
name: iOS (Build Only, Xcode ${{ matrix.xcode_version }} - ${{ matrix.os_version }} - ${{ matrix.arch }})
287+
needs: generate
288+
if: ${{ needs.generate.outputs.enable_ios_checks }}
269289
runs-on: [self-hosted, macos, "${{ matrix.os_version }}", "${{ matrix.arch }}"]
270290
strategy:
271291
fail-fast: false
272292
matrix:
293+
matrix_enabled:
294+
- ${{ inputs.enable_ios_checks }}
273295
xcode_version: ${{ fromJson(inputs.ios_host_xcode_versions || inputs.macos_xcode_versions) }}
274296
os_version: ${{ fromJson(inputs.ios_host_versions || inputs.macos_versions) }}
275297
arch: ${{ fromJson(inputs.ios_host_archs || inputs.macos_archs) }}
276298
exclude:
277299
- ${{ fromJson(inputs.ios_host_exclude_xcode_versions || inputs.macos_exclude_xcode_versions) }}
278-
- ${{ fromJson((!inputs.enable_ios_checks && (inputs.ios_host_xcode_versions || inputs.macos_xcode_versions)) || '[]') }}
279-
- ${{ fromJson((!inputs.enable_ios_checks && (inputs.ios_host_versions || inputs.macos_versions)) || '[]') }}
280-
- ${{ fromJson((!inputs.enable_ios_checks && (inputs.ios_host_archs || inputs.macos_archs)) || '[]') }}
300+
- matrix_enabled: false
281301
steps:
282302
- name: Checkout repository
283303
uses: actions/checkout@v4
@@ -304,10 +324,14 @@ jobs:
304324

305325
linux-build:
306326
name: Linux (${{ matrix.swift_version }} - ${{ matrix.os_version }} - ${{ matrix.arch }})
327+
needs: generate
328+
if: ${{ needs.generate.outputs.enable_linux_checks }}
307329
runs-on: ${{ matrix.runner }}
308330
strategy:
309331
fail-fast: false
310332
matrix:
333+
matrix_enabled:
334+
- ${{ inputs.enable_linux_checks }}
311335
swift_version: ${{ fromJson(inputs.linux_swift_versions) }}
312336
os_version: ${{ fromJson(inputs.linux_os_versions) }}
313337
arch: ${{ fromJson(inputs.linux_host_archs) }}
@@ -322,9 +346,7 @@ jobs:
322346
}}
323347
exclude:
324348
- ${{ fromJson(inputs.linux_exclude_swift_versions) }}
325-
- ${{ fromJson((!inputs.enable_linux_checks && inputs.linux_swift_versions) || '[]') }}
326-
- ${{ fromJson((!inputs.enable_linux_checks && inputs.linux_os_versions) || '[]') }}
327-
- ${{ fromJson((!inputs.enable_linux_checks && inputs.linux_host_archs) || '[]') }}
349+
- matrix_enabled: false
328350
- arch: x86_64
329351
runner: ubuntu-24.04-arm
330352
- arch: aarch64
@@ -386,10 +408,14 @@ jobs:
386408

387409
linux-static-sdk-build:
388410
name: Static Linux Swift SDK Build (${{ matrix.swift_version }} - ${{ matrix.os_version }} - ${{ matrix.arch }})
411+
needs: generate
412+
if: ${{ needs.generate.outputs.enable_linux_static_sdk_build }}
389413
runs-on: ${{ matrix.runner }}
390414
strategy:
391415
fail-fast: false
392416
matrix:
417+
matrix_enabled:
418+
- ${{ inputs.enable_linux_static_sdk_build }}
393419
swift_version: ${{ fromJson(inputs.linux_static_sdk_versions) }}
394420
os_version: ${{ fromJson(inputs.linux_os_versions) }}
395421
arch: ${{ fromJson(inputs.linux_host_archs) }}
@@ -404,9 +430,7 @@ jobs:
404430
}}
405431
exclude:
406432
- ${{ fromJson(inputs.linux_static_sdk_exclude_swift_versions) }}
407-
- ${{ fromJson((!inputs.enable_linux_static_sdk_build && inputs.linux_static_sdk_versions) || '[]') }}
408-
- ${{ fromJson((!inputs.enable_linux_static_sdk_build && inputs.linux_os_versions) || '[]') }}
409-
- ${{ fromJson((!inputs.enable_linux_static_sdk_build && inputs.linux_host_archs) || '[]') }}
433+
- matrix_enabled: false
410434
- arch: x86_64
411435
runner: ubuntu-24.04-arm
412436
- arch: aarch64
@@ -467,16 +491,21 @@ jobs:
467491
468492
wasm-sdk-build:
469493
name: Swift SDK for Wasm Build (${{ matrix.swift_version }} - ${{ matrix.os_version }})
470-
runs-on: ubuntu-latest
494+
needs: generate
495+
if: ${{ needs.generate.outputs.enable_wasm_sdk_build }}
496+
runs-on: ${{ matrix.runner }}
471497
strategy:
472498
fail-fast: false
473499
matrix:
500+
matrix_enabled:
501+
- ${{ inputs.enable_wasm_sdk_build }}
474502
swift_version: ${{ fromJson(inputs.wasm_sdk_versions) }}
475503
os_version: ${{ fromJson(inputs.linux_os_versions) }}
504+
runner:
505+
- ubuntu-latest
476506
exclude:
477507
- ${{ fromJson(inputs.wasm_exclude_swift_versions) }}
478-
- ${{ fromJson((!inputs.enable_wasm_sdk_build && inputs.wasm_sdk_versions) || '[]') }}
479-
- ${{ fromJson((!inputs.enable_wasm_sdk_build && inputs.linux_os_versions) || '[]') }}
508+
- matrix_enabled: false
480509
container:
481510
image: ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }}
482511
steps:
@@ -533,16 +562,21 @@ jobs:
533562
534563
embedded-wasm-sdk-build:
535564
name: Embedded Swift SDK for Wasm Build (${{ matrix.swift_version }} - ${{ matrix.os_version }})
536-
runs-on: ubuntu-latest
565+
needs: generate
566+
if: ${{ needs.generate.outputs.enable_embedded_wasm_sdk_build }}
567+
runs-on: ${{ matrix.runner }}
537568
strategy:
538569
fail-fast: false
539570
matrix:
571+
matrix_enabled:
572+
- ${{ inputs.enable_embedded_wasm_sdk_build }}
573+
runner:
574+
- ubuntu-latest
540575
swift_version: ${{ fromJson(inputs.wasm_sdk_versions) }}
541576
os_version: ${{ fromJson(inputs.linux_os_versions) }}
542577
exclude:
543578
- ${{ fromJson(inputs.wasm_exclude_swift_versions) }}
544-
- ${{ fromJson((!inputs.enable_embedded_wasm_sdk_build && inputs.wasm_sdk_versions) || '[]') }}
545-
- ${{ fromJson((!inputs.enable_embedded_wasm_sdk_build && inputs.linux_os_versions) || '[]') }}
579+
- matrix_enabled: false
546580
container:
547581
image: ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }}
548582
steps:
@@ -599,18 +633,22 @@ jobs:
599633
600634
android-sdk-build:
601635
name: Swift SDK for Android Build (${{ matrix.swift_version }} - ${{ matrix.os_version }} - NDK ${{ matrix.ndk_version }})
602-
runs-on: ubuntu-latest
636+
needs: generate
637+
if: ${{ needs.generate.outputs.enable_android_sdk_build }}
638+
runs-on: ${{ matrix.runner }}
603639
strategy:
604640
fail-fast: false
605641
matrix:
642+
matrix_enabled:
643+
- ${{ inputs.enable_android_sdk_build }}
644+
runner:
645+
- ubuntu-latest
606646
swift_version: ${{ fromJson(inputs.android_sdk_versions) }}
607647
ndk_version: ${{ fromJson(inputs.android_ndk_versions) }}
608648
os_version: ${{ fromJson(inputs.linux_os_versions) }}
609649
exclude:
610650
- ${{ fromJson(inputs.android_exclude_swift_versions) }}
611-
- ${{ fromJson((!inputs.enable_android_sdk_build && inputs.android_sdk_versions) || '[]') }}
612-
- ${{ fromJson((!inputs.enable_android_sdk_build && inputs.android_ndk_versions) || '[]') }}
613-
- ${{ fromJson((!inputs.enable_android_sdk_build && inputs.linux_os_versions) || '[]') }}
651+
- matrix_enabled: false
614652
container:
615653
image: ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }}
616654
steps:
@@ -667,16 +705,19 @@ jobs:
667705
668706
windows-build:
669707
name: Windows (${{ matrix.swift_version }} - ${{ matrix.os_version }})
708+
needs: generate
709+
if: ${{ needs.generate.outputs.enable_windows_checks }}
670710
runs-on: ${{ matrix.os_version }}
671711
strategy:
672712
fail-fast: false
673713
matrix:
714+
matrix_enabled:
715+
- ${{ inputs.enable_windows_checks }}
674716
swift_version: ${{ fromJson(inputs.windows_swift_versions) }}
675717
os_version: ${{ fromJson(inputs.windows_os_versions) }}
676718
exclude:
677719
- ${{ fromJson(inputs.windows_exclude_swift_versions) }}
678-
- ${{ fromJson((!inputs.enable_windows_checks && inputs.windows_swift_versions) || '[]') }}
679-
- ${{ fromJson((!inputs.enable_windows_checks && inputs.windows_os_versions) || '[]') }}
720+
- matrix_enabled: false
680721
steps:
681722
- name: Checkout repository
682723
uses: actions/checkout@v4

0 commit comments

Comments
 (0)