@@ -3,14 +3,18 @@ name: Swift Linux Matrix
33on :
44 workflow_call :
55 inputs :
6- exclude_swift_versions :
6+ linux_exclude_swift_versions :
77 type : string
8- description : " Exclude Swift version list (JSON)"
8+ description : " Exclude Linux Swift version list (JSON)"
99 default : " [{\" swift_version\" : \"\" }]"
10- os_versions :
10+ linux_os_versions :
1111 type : string
12- description : " OS version list (JSON)"
12+ description : " Linux OS version list (JSON)"
1313 default : " [\" jammy\" ]"
14+ windows_exclude_swift_versions :
15+ type : string
16+ description : " Exclude Windows Swift version list (JSON)"
17+ default : " [{\" swift_version\" : \"\" }]"
1418 swift_flags :
1519 type : string
1620 description : " Swift flags for release version"
1923 type : string
2024 description : " Swift flags for nightly version"
2125 default : " "
22- pre_build_command :
26+ linux_pre_build_command :
2327 type : string
24- description : " Command to execute before building the Swift package"
28+ description : " Linux command to execute before building the Swift package"
2529 default : " "
26- build_command :
30+ linux_build_command :
31+ type : string
32+ description : " Linux Build command default is swift test"
33+ default : " swift test"
34+ windows_build_command :
2735 type : string
28- description : " Build command default is swift test"
36+ description : " Linux Build command default is swift test"
2937 default : " swift test"
30- env_vars :
38+ linux_env_vars :
3139 description : " List of environment variables"
3240 type : string
41+ enable_windows_checks :
42+ type : boolean
43+ description : " Boolean to enable windows testing. Defaults to true."
44+ default : true
3345
3446jobs :
35- build :
47+ linux- build :
3648 name : Linux (${{ matrix.swift_version }} - ${{ matrix.os_version }})
3749 runs-on : ubuntu-latest
3850 strategy :
3951 fail-fast : false
4052 matrix :
4153 swift_version : ['5.8', '5.9', '5.10', '6.0', 'nightly-main', 'nightly-6.0']
42- os_version : ${{ fromJson(inputs.os_versions ) }}
54+ os_version : ${{ fromJson(inputs.linux_os_versions ) }}
4355 exclude :
44- - ${{ fromJson(inputs.exclude_swift_versions ) }}
56+ - ${{ fromJson(inputs.linux_exclude_swift_versions ) }}
4557 container :
4658 image : ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }}
4759 steps :
@@ -50,13 +62,51 @@ jobs:
5062 - name : Checkout repository
5163 uses : actions/checkout@v4
5264 - name : Set environment variables
53- if : ${{ inputs.env_vars }}
65+ if : ${{ inputs.linux_env_vars }}
5466 run : |
55- for i in "${{ inputs.env_vars }}"
67+ for i in "${{ inputs.linux_env_vars }}"
5668 do
5769 printf "%s\n" $i >> $GITHUB_ENV
5870 done
5971 - name : Pre-build
60- run : ${{ inputs.pre_build_command }}
72+ run : ${{ inputs.linux_pre_build_command }}
73+ - name : Build / Test
74+ run : ${{ inputs.linux_build_command }} ${{ (contains(matrix.swift_version, 'nightly') && inputs.swift_nightly_flags) || inputs.swift_flags }}
75+
76+ windows-build :
77+ name : Windows (${{ matrix.swift_version }} - windows-2022)
78+ if : ${{ inputs.enable_windows_checks }}
79+ runs-on : windows-2022
80+ strategy :
81+ fail-fast : false
82+ matrix :
83+ swift_version : ['5.9', '5.10', '6.0']
84+ exclude :
85+ - ${{ fromJson(inputs.windows_exclude_swift_versions) }}
86+ steps :
87+ - name : Pull Docker image
88+ run : docker pull swift:${{ matrix.swift_version }}-windowsservercore-ltsc2022
89+ - name : Checkout repository
90+ uses : actions/checkout@v4
91+ - name : Build / Test
92+ timeout-minutes : 20
93+ 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 }}"
94+
95+ windows-nightly-build :
96+ name : Windows (${{ matrix.swift_version }} - windows-2019)
97+ if : ${{ inputs.enable_windows_checks }}
98+ runs-on : windows-2019
99+ strategy :
100+ fail-fast : false
101+ matrix :
102+ swift_version : ['nightly', 'nightly-6.0']
103+ exclude :
104+ - ${{ fromJson(inputs.windows_exclude_swift_versions) }}
105+ steps :
106+ - name : Pull Docker image
107+ run : docker pull swiftlang/swift:${{ matrix.swift_version }}-windowsservercore-1809
108+ - name : Checkout repository
109+ uses : actions/checkout@v4
61110 - name : Build / Test
62- run : ${{ inputs.build_command }} ${{ (contains(matrix.swift_version, 'nightly') && inputs.swift_nightly_flags) || inputs.swift_flags }}
111+ timeout-minutes : 20
112+ 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 }}"
0 commit comments