@@ -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', '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