1313 - " Source/**"
1414 - " Tests/**"
1515
16- concurrency :
17- group : ci
18- cancel-in-progress : true
19-
2016jobs :
2117 SwiftLint :
2218 runs-on : ubuntu-latest
@@ -28,40 +24,176 @@ jobs:
2824 args : --strict
2925 env :
3026 DIFF_BASE : ${{ github.base_ref }}
31- Latest :
32- name : Test Latest (iOS, macOS, tvOS, watchOS)
33- 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 "Log" -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 "Log" -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 }}
88+ env :
89+ DEVELOPER_DIR : " /Applications/${{ matrix.xcode }}.app/Contents/Developer"
90+ timeout-minutes : 20
91+ strategy :
92+ fail-fast : false
93+ matrix :
94+ include :
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
103+ steps :
104+ - uses : actions/checkout@v3
105+ - name : ${{ matrix.name }}
106+ run : xcodebuild test -scheme "Log" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
107+ - name : Upload coverage reports to Codecov
108+ uses : codecov/codecov-action@v3.1.0
109+ with :
110+ token : ${{ secrets.CODECOV_TOKEN }}
111+ xcode : true
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 }}
34121 env :
35- DEVELOPER_DIR : " /Applications/Xcode_14.1 .app/Contents/Developer"
36- timeout-minutes : 10
122+ DEVELOPER_DIR : " /Applications/${{ matrix.xcode }} .app/Contents/Developer"
123+ timeout-minutes : 20
37124 strategy :
38125 fail-fast : false
39126 matrix :
40127 include :
41- - destination : " OS=16.1,name=iPhone 14 Pro"
42- name : " iOS"
43- scheme : " Log"
44- sdk : iphonesimulator
45- - destination : " OS=16.1,name=Apple TV"
46- name : " tvOS"
47- scheme : " Log"
48- sdk : appletvsimulator
49- - destination : " OS=9.1,name=Apple Watch Series 8 (45mm)"
50- name : " watchOS"
51- scheme : " Log"
52- sdk : watchsimulator
53- - destination : " platform=macOS"
54- name : " macOS"
55- scheme : " Log"
56- sdk : macosx
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
57136 steps :
58137 - uses : actions/checkout@v3
59138 - name : ${{ matrix.name }}
60- run : xcodebuild test -scheme "${{ matrix.scheme }} " -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath ". /${{ matrix.sdk }}.xcresult" | xcpretty -r junit
139+ run : xcodebuild test -scheme "Log " -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output /${{ matrix.name }}.xcresult" || exit 1
61140 - name : Upload coverage reports to Codecov
62141 uses : codecov/codecov-action@v3.1.0
63142 with :
64143 token : ${{ secrets.CODECOV_TOKEN }}
65144 xcode : true
66- xcode_archive_path : " ./${{ matrix.sdk }}.xcresult"
67-
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