8
8
pull_request :
9
9
paths :
10
10
- ' .swiftlint.yml'
11
- branches :
12
- - main
13
- - dev
14
-
15
- concurrency :
16
- group : ci
17
- cancel-in-progress : true
11
+ - " .github/workflows/**"
12
+ - " Package.swift"
13
+ - " Source/**"
14
+ - " Tests/**"
18
15
19
16
jobs :
20
17
SwiftLint :
@@ -27,39 +24,176 @@ jobs:
27
24
args : --strict
28
25
env :
29
26
DIFF_BASE : ${{ github.base_ref }}
30
- Latest :
31
- name : Test Latest (iOS, macOS, tvOS, watchOS)
32
- 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_15.0"
38
+ runsOn : macos-13
39
+ name : " macOS 13, Xcode 15.0, Swift 5.9.0"
40
+ - xcode : " Xcode_14.3.1"
41
+ runsOn : macos-13
42
+ name : " macOS 13, Xcode 14.3.1, Swift 5.8.0"
43
+ steps :
44
+ - uses : actions/checkout@v3
45
+ - name : ${{ matrix.name }}
46
+ run : xcodebuild test -scheme "Validator-Package" -destination "platform=macOS" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
47
+ - name : Upload coverage reports to Codecov
48
+ uses : codecov/codecov-action@v3.1.0
49
+ with :
50
+ token : ${{ secrets.CODECOV_TOKEN }}
51
+ xcode : true
52
+ xcode_archive_path : test_output/${{ matrix.name }}.xcresult
53
+ - uses : actions/upload-artifact@v4
54
+ with :
55
+ name : ${{ matrix.name }}
56
+ path : test_output
57
+
58
+ iOS :
59
+ name : ${{ matrix.name }}
60
+ runs-on : ${{ matrix.runsOn }}
61
+ env :
62
+ DEVELOPER_DIR : " /Applications/${{ matrix.xcode }}.app/Contents/Developer"
63
+ timeout-minutes : 20
64
+ strategy :
65
+ fail-fast : false
66
+ matrix :
67
+ include :
68
+ - destination : " OS=17.0.1,name=iPhone 14 Pro"
69
+ name : " iOS 17.0.1"
70
+ xcode : " Xcode_15.0"
71
+ runsOn : macos-13
72
+ - destination : " OS=16.4,name=iPhone 14 Pro"
73
+ name : " iOS 16.4"
74
+ xcode : " Xcode_14.3.1"
75
+ runsOn : macos-13
76
+ steps :
77
+ - uses : actions/checkout@v3
78
+ - name : ${{ matrix.name }}
79
+ run : xcodebuild test -scheme "Validator-Package" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
80
+ - uses : actions/upload-artifact@v4
81
+ with :
82
+ name : ${{ matrix.name }}
83
+ path : test_output
84
+
85
+ tvOS :
86
+ name : ${{ matrix.name }}
87
+ runs-on : ${{ matrix.runsOn }}
33
88
env :
34
- DEVELOPER_DIR : " /Applications/Xcode_14.1 .app/Contents/Developer"
35
- timeout-minutes : 10
89
+ DEVELOPER_DIR : " /Applications/${{ matrix.xcode }} .app/Contents/Developer"
90
+ timeout-minutes : 20
36
91
strategy :
37
92
fail-fast : false
38
93
matrix :
39
94
include :
40
- - destination : " OS=16.1,name=iPhone 14 Pro"
41
- name : " iOS"
42
- scheme : " Validator-Package"
43
- sdk : iphonesimulator
44
- - destination : " OS=16.1,name=Apple TV"
45
- name : " tvOS"
46
- scheme : " Validator-Package"
47
- sdk : appletvsimulator
48
- - destination : " OS=9.1,name=Apple Watch Series 8 (45mm)"
49
- name : " watchOS"
50
- scheme : " Validator-Package"
51
- sdk : watchsimulator
52
- - destination : " platform=macOS"
53
- name : " macOS"
54
- scheme : " Validator-Package"
55
- sdk : macosx
95
+ - destination : " OS=17.0,name=Apple TV"
96
+ name : " tvOS 17.0"
97
+ xcode : " Xcode_15.0"
98
+ runsOn : macos-13
99
+ - destination : " OS=16.4,name=Apple TV"
100
+ name : " tvOS 16.4"
101
+ xcode : " Xcode_14.3.1"
102
+ runsOn : macos-13
56
103
steps :
57
104
- uses : actions/checkout@v3
58
105
- name : ${{ matrix.name }}
59
- run : xcodebuild test -scheme "${{ matrix.scheme }} " -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath ". /${{ matrix.sdk }}.xcresult" | xcpretty -r junit
106
+ run : xcodebuild test -scheme "Validator-Package " -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output /${{ matrix.name }}.xcresult" || exit 1
60
107
- name : Upload coverage reports to Codecov
61
108
uses : codecov/codecov-action@v3.1.0
62
109
with :
63
110
token : ${{ secrets.CODECOV_TOKEN }}
64
111
xcode : true
65
- xcode_archive_path : " ./${{ matrix.sdk }}.xcresult"
112
+ xcode_archive_path : test_output/${{ matrix.name }}.xcresult
113
+ - uses : actions/upload-artifact@v4
114
+ with :
115
+ name : ${{ matrix.name }}
116
+ path : test_output
117
+
118
+ watchOS :
119
+ name : ${{ matrix.name }}
120
+ runs-on : ${{ matrix.runsOn }}
121
+ env :
122
+ DEVELOPER_DIR : " /Applications/${{ matrix.xcode }}.app/Contents/Developer"
123
+ timeout-minutes : 20
124
+ strategy :
125
+ fail-fast : false
126
+ matrix :
127
+ include :
128
+ - destination : " OS=10.0,name=Apple Watch Series 9 (45mm)"
129
+ name : " watchOS 10.0"
130
+ xcode : " Xcode_15.0"
131
+ runsOn : macos-13
132
+ - destination : " OS=9.4,name=Apple Watch Series 8 (45mm)"
133
+ name : " watchOS 9.4"
134
+ xcode : " Xcode_14.3.1"
135
+ runsOn : macos-13
136
+ steps :
137
+ - uses : actions/checkout@v3
138
+ - name : ${{ matrix.name }}
139
+ run : xcodebuild test -scheme "Validator-Package" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
140
+ - name : Upload coverage reports to Codecov
141
+ uses : codecov/codecov-action@v3.1.0
142
+ with :
143
+ token : ${{ secrets.CODECOV_TOKEN }}
144
+ xcode : true
145
+ xcode_archive_path : test_output/${{ matrix.name }}.xcresult
146
+ - uses : actions/upload-artifact@v4
147
+ with :
148
+ name : ${{ matrix.name }}
149
+ path : test_output
150
+
151
+ spm :
152
+ name : ${{ matrix.name }}
153
+ runs-on : ${{ matrix.runsOn }}
154
+ env :
155
+ DEVELOPER_DIR : " /Applications/${{ matrix.xcode }}.app/Contents/Developer"
156
+ timeout-minutes : 20
157
+ strategy :
158
+ fail-fast : false
159
+ matrix :
160
+ include :
161
+ - name : " Xcode 15"
162
+ xcode : " Xcode_15.0"
163
+ runsOn : macos-13
164
+ - name : " Xcode 14"
165
+ xcode : " Xcode_14.3.1"
166
+ runsOn : macos-13
167
+ steps :
168
+ - uses : actions/checkout@v3
169
+ - name : ${{ matrix.name }}
170
+ run : swift build -c release
171
+
172
+ merge-test-reports :
173
+ needs : [iOS, macOS, watchOS, tvOS]
174
+ runs-on : macos-13
175
+ steps :
176
+ - name : Download artifacts
177
+ uses : actions/download-artifact@v4
178
+ with :
179
+ path : test_output
180
+ - run : xcrun xcresulttool merge test_output/**/*.xcresult --output-path test_output/final/final.xcresult
181
+ - name : Upload Merged Artifact
182
+ uses : actions/upload-artifact@v4
183
+ with :
184
+ name : MergedResult
185
+ path : test_output/final
186
+
187
+ discover-typos :
188
+ name : Discover Typos
189
+ runs-on : macOS-12
190
+ env :
191
+ DEVELOPER_DIR : /Applications/Xcode_14.1.app/Contents/Developer
192
+ steps :
193
+ - uses : actions/checkout@v2
194
+ - name : Discover typos
195
+ run : |
196
+ export PATH="$PATH:/Library/Frameworks/Python.framework/Versions/3.11/bin"
197
+ python3 -m pip install --upgrade pip
198
+ python3 -m pip install codespell
199
+ codespell --ignore-words-list="hart,inout,msdos,sur" --skip="./.build/*,./.git/*"
0 commit comments