88 pull_request :
99 paths :
1010 - ' .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/**"
1815
1916jobs :
2017 SwiftLint :
@@ -27,39 +24,176 @@ jobs:
2724 args : --strict
2825 env :
2926 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+ 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 }}
3388 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
3691 strategy :
3792 fail-fast : false
3893 matrix :
3994 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
56103 steps :
57104 - uses : actions/checkout@v3
58105 - 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
60107 - name : Upload coverage reports to Codecov
6110862109 with :
63110 token : ${{ secrets.CODECOV_TOKEN }}
64111 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+ 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