diff --git a/.github/workflows/swift_package_test.yml b/.github/workflows/swift_package_test.yml index e313eefa..7fb99512 100644 --- a/.github/workflows/swift_package_test.yml +++ b/.github/workflows/swift_package_test.yml @@ -224,20 +224,38 @@ on: default: false jobs: + generate: + name: '' + runs-on: ubuntu-latest + outputs: + enable_macos_checks: "false" + enable_ios_checks: "false" + enable_linux_checks: "false" + enable_linux_static_sdk_build: "false" + enable_wasm_sdk_build: "false" + enable_embedded_wasm_sdk_build: "false" + enable_android_sdk_build: "false" + enable_windows_checks: "false" + steps: + - name: Generate + run: echo + macos-build: name: macOS (Xcode ${{ matrix.xcode_version }} - ${{ matrix.os_version }} - ${{ matrix.arch }}) + needs: generate + if: ${{ needs.generate.outputs.enable_macos_checks }} runs-on: [self-hosted, macos, "${{ matrix.os_version }}", "${{ matrix.arch }}"] strategy: fail-fast: false matrix: + matrix_enabled: + - ${{ inputs.enable_macos_checks }} xcode_version: ${{ fromJson(inputs.macos_xcode_versions) }} os_version: ${{ fromJson(inputs.macos_versions) }} arch: ${{ fromJson(inputs.macos_archs) }} exclude: - ${{ fromJson(inputs.macos_exclude_xcode_versions) }} - - ${{ fromJson((!inputs.enable_macos_checks && inputs.macos_xcode_versions) || '[]') }} - - ${{ fromJson((!inputs.enable_macos_checks && inputs.macos_versions) || '[]') }} - - ${{ fromJson((!inputs.enable_macos_checks && inputs.macos_archs) || '[]') }} + - matrix_enabled: false steps: - name: Checkout repository uses: actions/checkout@v4 @@ -266,18 +284,20 @@ jobs: ios-build: name: iOS (Build Only, Xcode ${{ matrix.xcode_version }} - ${{ matrix.os_version }} - ${{ matrix.arch }}) + needs: generate + if: ${{ needs.generate.outputs.enable_ios_checks }} runs-on: [self-hosted, macos, "${{ matrix.os_version }}", "${{ matrix.arch }}"] strategy: fail-fast: false matrix: + matrix_enabled: + - ${{ inputs.enable_ios_checks }} xcode_version: ${{ fromJson(inputs.ios_host_xcode_versions || inputs.macos_xcode_versions) }} os_version: ${{ fromJson(inputs.ios_host_versions || inputs.macos_versions) }} arch: ${{ fromJson(inputs.ios_host_archs || inputs.macos_archs) }} exclude: - ${{ fromJson(inputs.ios_host_exclude_xcode_versions || inputs.macos_exclude_xcode_versions) }} - - ${{ fromJson((!inputs.enable_ios_checks && (inputs.ios_host_xcode_versions || inputs.macos_xcode_versions)) || '[]') }} - - ${{ fromJson((!inputs.enable_ios_checks && (inputs.ios_host_versions || inputs.macos_versions)) || '[]') }} - - ${{ fromJson((!inputs.enable_ios_checks && (inputs.ios_host_archs || inputs.macos_archs)) || '[]') }} + - matrix_enabled: false steps: - name: Checkout repository uses: actions/checkout@v4 @@ -304,10 +324,14 @@ jobs: linux-build: name: Linux (${{ matrix.swift_version }} - ${{ matrix.os_version }} - ${{ matrix.arch }}) + needs: generate + if: ${{ needs.generate.outputs.enable_linux_checks }} runs-on: ${{ matrix.runner }} strategy: fail-fast: false matrix: + matrix_enabled: + - ${{ inputs.enable_linux_checks }} swift_version: ${{ fromJson(inputs.linux_swift_versions) }} os_version: ${{ fromJson(inputs.linux_os_versions) }} arch: ${{ fromJson(inputs.linux_host_archs) }} @@ -322,9 +346,7 @@ jobs: }} exclude: - ${{ fromJson(inputs.linux_exclude_swift_versions) }} - - ${{ fromJson((!inputs.enable_linux_checks && inputs.linux_swift_versions) || '[]') }} - - ${{ fromJson((!inputs.enable_linux_checks && inputs.linux_os_versions) || '[]') }} - - ${{ fromJson((!inputs.enable_linux_checks && inputs.linux_host_archs) || '[]') }} + - matrix_enabled: false - arch: x86_64 runner: ubuntu-24.04-arm - arch: aarch64 @@ -386,10 +408,14 @@ jobs: linux-static-sdk-build: name: Static Linux Swift SDK Build (${{ matrix.swift_version }} - ${{ matrix.os_version }} - ${{ matrix.arch }}) + needs: generate + if: ${{ needs.generate.outputs.enable_linux_static_sdk_build }} runs-on: ${{ matrix.runner }} strategy: fail-fast: false matrix: + matrix_enabled: + - ${{ inputs.enable_linux_static_sdk_build }} swift_version: ${{ fromJson(inputs.linux_static_sdk_versions) }} os_version: ${{ fromJson(inputs.linux_os_versions) }} arch: ${{ fromJson(inputs.linux_host_archs) }} @@ -404,9 +430,7 @@ jobs: }} exclude: - ${{ fromJson(inputs.linux_static_sdk_exclude_swift_versions) }} - - ${{ fromJson((!inputs.enable_linux_static_sdk_build && inputs.linux_static_sdk_versions) || '[]') }} - - ${{ fromJson((!inputs.enable_linux_static_sdk_build && inputs.linux_os_versions) || '[]') }} - - ${{ fromJson((!inputs.enable_linux_static_sdk_build && inputs.linux_host_archs) || '[]') }} + - matrix_enabled: false - arch: x86_64 runner: ubuntu-24.04-arm - arch: aarch64 @@ -467,16 +491,21 @@ jobs: wasm-sdk-build: name: Swift SDK for Wasm Build (${{ matrix.swift_version }} - ${{ matrix.os_version }}) - runs-on: ubuntu-latest + needs: generate + if: ${{ needs.generate.outputs.enable_wasm_sdk_build }} + runs-on: ${{ matrix.runner }} strategy: fail-fast: false matrix: + matrix_enabled: + - ${{ inputs.enable_wasm_sdk_build }} swift_version: ${{ fromJson(inputs.wasm_sdk_versions) }} os_version: ${{ fromJson(inputs.linux_os_versions) }} + runner: + - ubuntu-latest exclude: - ${{ fromJson(inputs.wasm_exclude_swift_versions) }} - - ${{ fromJson((!inputs.enable_wasm_sdk_build && inputs.wasm_sdk_versions) || '[]') }} - - ${{ fromJson((!inputs.enable_wasm_sdk_build && inputs.linux_os_versions) || '[]') }} + - matrix_enabled: false container: image: ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }} steps: @@ -533,16 +562,21 @@ jobs: embedded-wasm-sdk-build: name: Embedded Swift SDK for Wasm Build (${{ matrix.swift_version }} - ${{ matrix.os_version }}) - runs-on: ubuntu-latest + needs: generate + if: ${{ needs.generate.outputs.enable_embedded_wasm_sdk_build }} + runs-on: ${{ matrix.runner }} strategy: fail-fast: false matrix: + matrix_enabled: + - ${{ inputs.enable_embedded_wasm_sdk_build }} + runner: + - ubuntu-latest swift_version: ${{ fromJson(inputs.wasm_sdk_versions) }} os_version: ${{ fromJson(inputs.linux_os_versions) }} exclude: - ${{ fromJson(inputs.wasm_exclude_swift_versions) }} - - ${{ fromJson((!inputs.enable_embedded_wasm_sdk_build && inputs.wasm_sdk_versions) || '[]') }} - - ${{ fromJson((!inputs.enable_embedded_wasm_sdk_build && inputs.linux_os_versions) || '[]') }} + - matrix_enabled: false container: image: ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }} steps: @@ -599,18 +633,22 @@ jobs: android-sdk-build: name: Swift SDK for Android Build (${{ matrix.swift_version }} - ${{ matrix.os_version }} - NDK ${{ matrix.ndk_version }}) - runs-on: ubuntu-latest + needs: generate + if: ${{ needs.generate.outputs.enable_android_sdk_build }} + runs-on: ${{ matrix.runner }} strategy: fail-fast: false matrix: + matrix_enabled: + - ${{ inputs.enable_android_sdk_build }} + runner: + - ubuntu-latest swift_version: ${{ fromJson(inputs.android_sdk_versions) }} ndk_version: ${{ fromJson(inputs.android_ndk_versions) }} os_version: ${{ fromJson(inputs.linux_os_versions) }} exclude: - ${{ fromJson(inputs.android_exclude_swift_versions) }} - - ${{ fromJson((!inputs.enable_android_sdk_build && inputs.android_sdk_versions) || '[]') }} - - ${{ fromJson((!inputs.enable_android_sdk_build && inputs.android_ndk_versions) || '[]') }} - - ${{ fromJson((!inputs.enable_android_sdk_build && inputs.linux_os_versions) || '[]') }} + - matrix_enabled: false container: image: ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }} steps: @@ -667,16 +705,19 @@ jobs: windows-build: name: Windows (${{ matrix.swift_version }} - ${{ matrix.os_version }}) + needs: generate + if: ${{ needs.generate.outputs.enable_windows_checks }} runs-on: ${{ matrix.os_version }} strategy: fail-fast: false matrix: + matrix_enabled: + - ${{ inputs.enable_windows_checks }} swift_version: ${{ fromJson(inputs.windows_swift_versions) }} os_version: ${{ fromJson(inputs.windows_os_versions) }} exclude: - ${{ fromJson(inputs.windows_exclude_swift_versions) }} - - ${{ fromJson((!inputs.enable_windows_checks && inputs.windows_swift_versions) || '[]') }} - - ${{ fromJson((!inputs.enable_windows_checks && inputs.windows_os_versions) || '[]') }} + - matrix_enabled: false steps: - name: Checkout repository uses: actions/checkout@v4