@@ -3,14 +3,18 @@ name: Swift Linux Matrix
3
3
on :
4
4
workflow_call :
5
5
inputs :
6
- exclude_swift_versions :
6
+ linux_exclude_swift_versions :
7
7
type : string
8
- description : " Exclude Swift version list (JSON)"
8
+ description : " Exclude Linux Swift version list (JSON)"
9
9
default : " [{\" swift_version\" : \"\" }]"
10
- os_versions :
10
+ linux_os_versions :
11
11
type : string
12
- description : " OS version list (JSON)"
12
+ description : " Linux OS version list (JSON)"
13
13
default : " [\" jammy\" ]"
14
+ windows_exclude_swift_versions :
15
+ type : string
16
+ description : " Exclude Windows Swift version list (JSON)"
17
+ default : " [{\" swift_version\" : \"\" }]"
14
18
swift_flags :
15
19
type : string
16
20
description : " Swift flags for release version"
19
23
type : string
20
24
description : " Swift flags for nightly version"
21
25
default : " "
22
- pre_build_command :
26
+ linux_pre_build_command :
23
27
type : string
24
- description : " Command to execute before building the Swift package"
28
+ description : " Linux command to execute before building the Swift package"
25
29
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 :
27
35
type : string
28
- description : " Build command default is swift test"
36
+ description : " Linux Build command default is swift test"
29
37
default : " swift test"
30
- env_vars :
38
+ linux_env_vars :
31
39
description : " List of environment variables"
32
40
type : string
41
+ enable_windows_checks :
42
+ type : boolean
43
+ description : " Boolean to enable windows testing. Defaults to true."
44
+ default : true
33
45
34
46
jobs :
35
- build :
47
+ linux- build :
36
48
name : Linux (${{ matrix.swift_version }} - ${{ matrix.os_version }})
37
49
runs-on : ubuntu-latest
38
50
strategy :
39
51
fail-fast : false
40
52
matrix :
41
53
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 ) }}
43
55
exclude :
44
- - ${{ fromJson(inputs.exclude_swift_versions ) }}
56
+ - ${{ fromJson(inputs.linux_exclude_swift_versions ) }}
45
57
container :
46
58
image : ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }}
47
59
steps :
@@ -50,13 +62,51 @@ jobs:
50
62
- name : Checkout repository
51
63
uses : actions/checkout@v4
52
64
- name : Set environment variables
53
- if : ${{ inputs.env_vars }}
65
+ if : ${{ inputs.linux_env_vars }}
54
66
run : |
55
- for i in "${{ inputs.env_vars }}"
67
+ for i in "${{ inputs.linux_env_vars }}"
56
68
do
57
69
printf "%s\n" $i >> $GITHUB_ENV
58
70
done
59
71
- 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
61
110
- 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