12
12
- " Package.swift"
13
13
- " Source/**"
14
14
- " Tests/**"
15
+
15
16
jobs :
16
17
SwiftLint :
17
18
runs-on : ubuntu-latest
@@ -23,40 +24,214 @@ jobs:
23
24
args : --strict
24
25
env :
25
26
DIFF_BASE : ${{ github.base_ref }}
26
- Latest :
27
- name : Test Latest (iOS, macOS, tvOS, watchOS)
28
- runs-on : macOS-12
27
+ macOS :
28
+ name : ${{ matrix.name }}
29
+ runs-on : ${{ matrix.runsOn }}
30
+ env :
31
+ DEVELOPER_DIR : " /Applications/${{ matrix.xcode }}.app/Contents/Developer"
32
+ timeout-minutes : 20
33
+ strategy :
34
+ fail-fast : false
35
+ matrix :
36
+ include :
37
+ - xcode : " Xcode_16.0"
38
+ runsOn : macOS-14
39
+ name : " macOS 14, Xcode 16.0, Swift 6.0"
40
+ - xcode : " Xcode_15.4"
41
+ runsOn : macOS-14
42
+ name : " macOS 14, Xcode 15.4, Swift 5.10"
43
+ - xcode : " Xcode_15.0"
44
+ runsOn : macos-13
45
+ name : " macOS 13, Xcode 15.0, Swift 5.9.0"
46
+ - xcode : " Xcode_14.3.1"
47
+ runsOn : macos-13
48
+ name : " macOS 13, Xcode 14.3.1, Swift 5.8.0"
49
+ steps :
50
+ - uses : actions/checkout@v3
51
+ - name : ${{ matrix.name }}
52
+ run : xcodebuild test -scheme "Lazy" -destination "platform=macOS" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
53
+ - name : Upload test coverage reports to Codecov
54
+ uses : space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main
55
+ with :
56
+ scheme_name : Lazy
57
+ filename : ${{ matrix.name }}
58
+ token : ${{ secrets.CODECOV_TOKEN }}
59
+
60
+ iOS :
61
+ name : ${{ matrix.name }}
62
+ runs-on : ${{ matrix.runsOn }}
63
+ env :
64
+ DEVELOPER_DIR : " /Applications/${{ matrix.xcode }}.app/Contents/Developer"
65
+ timeout-minutes : 20
66
+ strategy :
67
+ fail-fast : false
68
+ matrix :
69
+ include :
70
+ - destination : " OS=18.1,name=iPhone 16 Pro"
71
+ name : " iOS 18.1"
72
+ xcode : " Xcode_16.1"
73
+ runsOn : macOS-14
74
+ - destination : " OS=18.0,name=iPhone 16 Pro"
75
+ name : " iOS 18.0"
76
+ xcode : " Xcode_16.0"
77
+ runsOn : macOS-14
78
+ - destination : " OS=17.5,name=iPhone 15 Pro"
79
+ name : " iOS 17.5"
80
+ xcode : " Xcode_15.4"
81
+ runsOn : macOS-14
82
+ - destination : " OS=17.0.1,name=iPhone 14 Pro"
83
+ name : " iOS 17.0.1"
84
+ xcode : " Xcode_15.0"
85
+ runsOn : macos-13
86
+ - destination : " OS=16.4,name=iPhone 14 Pro"
87
+ name : " iOS 16.4"
88
+ xcode : " Xcode_14.3.1"
89
+ runsOn : macos-13
90
+ steps :
91
+ - uses : actions/checkout@v3
92
+ - name : ${{ matrix.name }}
93
+ run : xcodebuild test -scheme "Lazy" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
94
+ - name : Upload test coverage reports to Codecov
95
+ uses : space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main
96
+ with :
97
+ scheme_name : Lazy
98
+ filename : ${{ matrix.name }}
99
+ token : ${{ secrets.CODECOV_TOKEN }}
100
+
101
+ tvOS :
102
+ name : ${{ matrix.name }}
103
+ runs-on : ${{ matrix.runsOn }}
104
+ env :
105
+ DEVELOPER_DIR : " /Applications/${{ matrix.xcode }}.app/Contents/Developer"
106
+ timeout-minutes : 20
107
+ strategy :
108
+ fail-fast : false
109
+ matrix :
110
+ include :
111
+ - destination : " OS=18.1,name=Apple TV"
112
+ name : " tvOS 18.1"
113
+ xcode : " Xcode_16.1"
114
+ runsOn : macOS-14
115
+ - destination : " OS=18.0,name=Apple TV"
116
+ name : " tvOS 18.0"
117
+ xcode : " Xcode_16.0"
118
+ runsOn : macOS-14
119
+ - destination : " OS=17.5,name=Apple TV"
120
+ name : " tvOS 17.5"
121
+ xcode : " Xcode_15.4"
122
+ runsOn : macOS-14
123
+ - destination : " OS=17.0,name=Apple TV"
124
+ name : " tvOS 17.0"
125
+ xcode : " Xcode_15.0"
126
+ runsOn : macos-13
127
+ - destination : " OS=16.4,name=Apple TV"
128
+ name : " tvOS 16.4"
129
+ xcode : " Xcode_14.3.1"
130
+ runsOn : macos-13
131
+ steps :
132
+ - uses : actions/checkout@v3
133
+ - name : ${{ matrix.name }}
134
+ run : xcodebuild test -scheme "Lazy" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
135
+ - name : Upload test coverage reports to Codecov
136
+ uses : space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main
137
+ with :
138
+ scheme_name : Lazy
139
+ filename : ${{ matrix.name }}
140
+ token : ${{ secrets.CODECOV_TOKEN }}
141
+
142
+ watchOS :
143
+ name : ${{ matrix.name }}
144
+ runs-on : ${{ matrix.runsOn }}
29
145
env :
30
- DEVELOPER_DIR : " /Applications/Xcode_14.1 .app/Contents/Developer"
31
- timeout-minutes : 10
146
+ DEVELOPER_DIR : " /Applications/${{ matrix.xcode }} .app/Contents/Developer"
147
+ timeout-minutes : 20
32
148
strategy :
33
149
fail-fast : false
34
150
matrix :
35
151
include :
36
- - destination : " OS=16.1,name=iPhone 14 Pro"
37
- name : " iOS"
38
- scheme : " Lazy"
39
- sdk : iphonesimulator
40
- - destination : " OS=16.1,name=Apple TV"
41
- name : " tvOS"
42
- scheme : " Lazy"
43
- sdk : appletvsimulator
44
- - destination : " OS=9.1,name=Apple Watch Series 8 (45mm)"
45
- name : " watchOS"
46
- scheme : " Lazy"
47
- sdk : watchsimulator
48
- - destination : " platform=macOS"
49
- name : " macOS"
50
- scheme : " Lazy"
51
- sdk : macosx
152
+ - destination : " OS=11.1,name=Apple Watch Series 10 (46mm)"
153
+ name : " watchOS 11.1"
154
+ xcode : " Xcode_16.1"
155
+ runsOn : macOS-14
156
+ - destination : " OS=11.0,name=Apple Watch Series 10 (46mm)"
157
+ name : " watchOS 11.0"
158
+ xcode : " Xcode_16.0"
159
+ runsOn : macOS-14
160
+ - destination : " OS=10.5,name=Apple Watch Series 9 (45mm)"
161
+ name : " watchOS 10.5"
162
+ xcode : " Xcode_15.4"
163
+ runsOn : macOS-14
164
+ - destination : " OS=10.0,name=Apple Watch Series 9 (45mm)"
165
+ name : " watchOS 10.0"
166
+ xcode : " Xcode_15.0"
167
+ runsOn : macos-13
168
+ - destination : " OS=9.4,name=Apple Watch Series 8 (45mm)"
169
+ name : " watchOS 9.4"
170
+ xcode : " Xcode_14.3.1"
171
+ runsOn : macos-13
52
172
steps :
53
173
- uses : actions/checkout@v3
54
174
- name : ${{ matrix.name }}
55
- run : xcodebuild test -scheme "${{ matrix.scheme }} " -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath ". /${{ matrix.sdk }}.xcresult" | xcpretty -r junit
56
- - name : Upload coverage reports to Codecov
57
- uses : codecov/codecov-action@v3.1.0
175
+ run : xcodebuild test -scheme "Lazy " -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output /${{ matrix.name }}.xcresult" || exit 1
176
+ - name : Upload test coverage reports to Codecov
177
+ uses : space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main
58
178
with :
179
+ scheme_name : Lazy
180
+ filename : ${{ matrix.name }}
59
181
token : ${{ secrets.CODECOV_TOKEN }}
60
- xcode : true
61
- xcode_archive_path : " ./${{ matrix.sdk }}.xcresult"
62
-
182
+
183
+ spm :
184
+ name : ${{ matrix.name }}
185
+ runs-on : ${{ matrix.runsOn }}
186
+ env :
187
+ DEVELOPER_DIR : " /Applications/${{ matrix.xcode }}.app/Contents/Developer"
188
+ timeout-minutes : 20
189
+ strategy :
190
+ fail-fast : false
191
+ matrix :
192
+ include :
193
+ - name : " macOS 14, SPM 6.0.2 Test"
194
+ xcode : " Xcode_16.1"
195
+ runsOn : macOS-14
196
+ - name : " macOS 14, SPM 6.0.0 Test"
197
+ xcode : " Xcode_16.0"
198
+ runsOn : macOS-14
199
+ - name : " macOS 14, SPM 5.9.0 Test"
200
+ xcode : " Xcode_15.0"
201
+ runsOn : macos-14
202
+ - name : " macOS 13, SPM 5.8.1 Test"
203
+ xcode : " Xcode_14.3.1"
204
+ runsOn : macos-13
205
+ steps :
206
+ - uses : actions/checkout@v3
207
+ - name : ${{ matrix.name }}
208
+ run : swift build -c release
209
+
210
+ merge-test-reports :
211
+ needs : [iOS, macOS, watchOS, tvOS]
212
+ runs-on : macos-13
213
+ steps :
214
+ - name : Download artifacts
215
+ uses : actions/download-artifact@v4
216
+ with :
217
+ path : test_output
218
+ - run : xcrun xcresulttool merge test_output/**/*.xcresult --output-path test_output/final/final.xcresult
219
+ - name : Upload Merged Artifact
220
+ uses : actions/upload-artifact@v4
221
+ with :
222
+ name : MergedResult
223
+ path : test_output/final
224
+
225
+ discover-typos :
226
+ name : Discover Typos
227
+ runs-on : macOS-13
228
+ env :
229
+ DEVELOPER_DIR : /Applications/Xcode_14.1.app/Contents/Developer
230
+ steps :
231
+ - uses : actions/checkout@v4
232
+ - name : Discover typos
233
+ run : |
234
+ export PATH="$PATH:/Library/Frameworks/Python.framework/Versions/3.11/bin"
235
+ python3 -m pip install --upgrade pip
236
+ python3 -m pip install codespell
237
+ codespell --ignore-words-list="hart,inout,msdos,sur" --skip="./.build/*,./.git/*"
0 commit comments