From 36418f7038f80ebfcce2b162cb4d818c9f0ff0c4 Mon Sep 17 00:00:00 2001 From: Mishal Shah Date: Wed, 16 Oct 2024 15:58:49 -0700 Subject: [PATCH 1/4] Support Windows platform for Swift package testing --- .github/workflows/swift_package_test.yml | 82 +++++++++++++++++++----- 1 file changed, 66 insertions(+), 16 deletions(-) diff --git a/.github/workflows/swift_package_test.yml b/.github/workflows/swift_package_test.yml index e780900..1e564fd 100644 --- a/.github/workflows/swift_package_test.yml +++ b/.github/workflows/swift_package_test.yml @@ -3,14 +3,18 @@ name: Swift Linux Matrix on: workflow_call: inputs: - exclude_swift_versions: + linux_exclude_swift_versions: type: string - description: "Exclude Swift version list (JSON)" + description: "Exclude Linux Swift version list (JSON)" default: "[{\"swift_version\": \"\"}]" - os_versions: + linux_os_versions: type: string - description: "OS version list (JSON)" + description: "Linux OS version list (JSON)" default: "[\"jammy\"]" + windows_exclude_swift_versions: + type: string + description: "Exclude Windows Swift version list (JSON)" + default: "[{\"swift_version\": \"\"}]" swift_flags: type: string description: "Swift flags for release version" @@ -19,29 +23,37 @@ on: type: string description: "Swift flags for nightly version" default: "" - pre_build_command: + linux_pre_build_command: type: string - description: "Command to execute before building the Swift package" + description: "Linux command to execute before building the Swift package" default: "" - build_command: + linux_build_command: + type: string + description: "Linux Build command default is swift test" + default: "swift test" + windows_build_command: type: string - description: "Build command default is swift test" + description: "Linux Build command default is swift test" default: "swift test" - env_vars: + linux_env_vars: description: "List of environment variables" type: string + enable_windows_checks: + type: boolean + description: "Boolean to enable windows testing. Defaults to true." + default: true jobs: - build: + linux-build: name: Linux (${{ matrix.swift_version }} - ${{ matrix.os_version }}) runs-on: ubuntu-latest strategy: fail-fast: false matrix: swift_version: ['5.8', '5.9', '5.10', '6.0', 'nightly-main', 'nightly-6.0'] - os_version: ${{ fromJson(inputs.os_versions) }} + os_version: ${{ fromJson(inputs.linux_os_versions) }} exclude: - - ${{ fromJson(inputs.exclude_swift_versions) }} + - ${{ fromJson(inputs.linux_exclude_swift_versions) }} container: image: ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }} steps: @@ -50,13 +62,51 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 - name: Set environment variables - if: ${{ inputs.env_vars }} + if: ${{ inputs.linux_env_vars }} run: | - for i in "${{ inputs.env_vars }}" + for i in "${{ inputs.linux_env_vars }}" do printf "%s\n" $i >> $GITHUB_ENV done - name: Pre-build - run: ${{ inputs.pre_build_command }} + run: ${{ inputs.linux_pre_build_command }} + - name: Build / Test + run: ${{ inputs.linux_build_command }} ${{ (contains(matrix.swift_version, 'nightly') && inputs.swift_nightly_flags) || inputs.swift_flags }} + + windows-build: + name: Windows (${{ matrix.swift_version }} - windows-2022) + if: ${{ inputs.enable_windows_checks }} + runs-on: windows-2022 + strategy: + fail-fast: false + matrix: + swift_version: ['5.9', '5.10', '6.0'] + exclude: + - ${{ fromJson(inputs.windows_exclude_swift_versions) }} + steps: + - name: Pull Docker image + run: docker pull swift:${{ matrix.swift_version }}-windowsservercore-ltsc2022 + - name: Checkout repository + uses: actions/checkout@v4 + - name: Build / Test + timeout-minutes: 20 + run: docker run -v ${{ github.workspace }}:C:\source swift:${{ matrix.swift_version }}-windowsservercore-ltsc2022 cmd /s /c "swift --version & swift test --version & cd C:\source\ & ${{ inputs.windows_build_command }} ${{ inputs.swift_flags }}" + + windows-nightly-build: + name: Windows (${{ matrix.swift_version }} - windows-2019) + if: ${{ inputs.enable_windows_checks }} + runs-on: windows-2019 + strategy: + fail-fast: false + matrix: + swift_version: ['nightly', 'nightly-6.0'] + exclude: + - ${{ fromJson(inputs.windows_exclude_swift_versions) }} + steps: + - name: Pull Docker image + run: docker pull swiftlang/swift:${{ matrix.swift_version }}-windowsservercore-1809 + - name: Checkout repository + uses: actions/checkout@v4 - name: Build / Test - run: ${{ inputs.build_command }} ${{ (contains(matrix.swift_version, 'nightly') && inputs.swift_nightly_flags) || inputs.swift_flags }} + timeout-minutes: 20 + run: docker run -v ${{ github.workspace }}:C:\source swiftlang/swift:${{ matrix.swift_version }}-windowsservercore-1809 cmd /s /c "swift --version & swift test --version & cd C:\source\ & ${{ inputs.windows_build_command }} ${{ inputs.swift_nightly_flags }}" From a5047c0c2e383d31377a0357593a2bfacf58d74d Mon Sep 17 00:00:00 2001 From: Mishal Shah Date: Fri, 18 Oct 2024 00:36:20 -0700 Subject: [PATCH 2/4] Switch to powershell for Windows build --- .github/workflows/swift_package_test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/swift_package_test.yml b/.github/workflows/swift_package_test.yml index 1e564fd..f051e96 100644 --- a/.github/workflows/swift_package_test.yml +++ b/.github/workflows/swift_package_test.yml @@ -90,7 +90,7 @@ jobs: uses: actions/checkout@v4 - name: Build / Test timeout-minutes: 20 - run: docker run -v ${{ github.workspace }}:C:\source swift:${{ matrix.swift_version }}-windowsservercore-ltsc2022 cmd /s /c "swift --version & swift test --version & cd C:\source\ & ${{ inputs.windows_build_command }} ${{ inputs.swift_flags }}" + run: docker run -v ${{ github.workspace }}:C:\source swift:${{ matrix.swift_version }}-windowsservercore-ltsc2022 pwsh -c "swift --version & swift test --version & cd C:\source\ & ${{ inputs.windows_build_command }} ${{ inputs.swift_flags }}" windows-nightly-build: name: Windows (${{ matrix.swift_version }} - windows-2019) @@ -109,4 +109,4 @@ jobs: uses: actions/checkout@v4 - name: Build / Test timeout-minutes: 20 - run: docker run -v ${{ github.workspace }}:C:\source swiftlang/swift:${{ matrix.swift_version }}-windowsservercore-1809 cmd /s /c "swift --version & swift test --version & cd C:\source\ & ${{ inputs.windows_build_command }} ${{ inputs.swift_nightly_flags }}" + run: docker run -v ${{ github.workspace }}:C:\source swiftlang/swift:${{ matrix.swift_version }}-windowsservercore-1809 pwsh -c "swift --version & swift test --version & cd C:\source\ & ${{ inputs.windows_build_command }} ${{ inputs.swift_nightly_flags }}" From 5f41b7f0f83e488b66299a575691fe2180d4bd92 Mon Sep 17 00:00:00 2001 From: Mishal Shah Date: Fri, 18 Oct 2024 21:41:47 -0700 Subject: [PATCH 3/4] Switch to powershell --- .github/workflows/swift_package_test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/swift_package_test.yml b/.github/workflows/swift_package_test.yml index f051e96..8f69205 100644 --- a/.github/workflows/swift_package_test.yml +++ b/.github/workflows/swift_package_test.yml @@ -90,7 +90,7 @@ jobs: uses: actions/checkout@v4 - name: Build / Test timeout-minutes: 20 - run: docker run -v ${{ github.workspace }}:C:\source swift:${{ matrix.swift_version }}-windowsservercore-ltsc2022 pwsh -c "swift --version & swift test --version & cd C:\source\ & ${{ inputs.windows_build_command }} ${{ inputs.swift_flags }}" + run: docker run -v ${{ github.workspace }}:C:\source swift:${{ matrix.swift_version }}-windowsservercore-ltsc2022 powershell "swift --version; swift test --version; cd C:\source\; ${{ inputs.windows_build_command }} ${{ inputs.swift_flags }}" windows-nightly-build: name: Windows (${{ matrix.swift_version }} - windows-2019) @@ -109,4 +109,4 @@ jobs: uses: actions/checkout@v4 - name: Build / Test timeout-minutes: 20 - run: docker run -v ${{ github.workspace }}:C:\source swiftlang/swift:${{ matrix.swift_version }}-windowsservercore-1809 pwsh -c "swift --version & swift test --version & cd C:\source\ & ${{ inputs.windows_build_command }} ${{ inputs.swift_nightly_flags }}" + run: docker run -v ${{ github.workspace }}:C:\source swiftlang/swift:${{ matrix.swift_version }}-windowsservercore-1809 powershell "swift --version; swift test --version; cd C:\source\; ${{ inputs.windows_build_command }} ${{ inputs.swift_nightly_flags }}" From fc40db53c2e9b46db93e996f8b66935ba20e4255 Mon Sep 17 00:00:00 2001 From: Mishal Shah Date: Fri, 18 Oct 2024 22:32:03 -0700 Subject: [PATCH 4/4] change the 5.10 to 5.10.0 --- .github/workflows/swift_package_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/swift_package_test.yml b/.github/workflows/swift_package_test.yml index 8f69205..dd0bbc1 100644 --- a/.github/workflows/swift_package_test.yml +++ b/.github/workflows/swift_package_test.yml @@ -80,7 +80,7 @@ jobs: strategy: fail-fast: false matrix: - swift_version: ['5.9', '5.10', '6.0'] + swift_version: ['5.9', '5.10.0', '6.0'] exclude: - ${{ fromJson(inputs.windows_exclude_swift_versions) }} steps: