44 push :
55 branches :
66 - main
7- - dev
87 pull_request :
98 paths :
109 - ' .swiftlint.yml'
1312 - " Source/**"
1413 - " Tests/**"
1514
15+ permissions :
16+ contents : read
17+
18+ concurrency :
19+ group : atomic-${{ github.head_ref }}
20+ cancel-in-progress : true
21+
22+ env :
23+ SCHEME_NAME : " Atomic"
24+
1625jobs :
17- SwiftLint :
18- runs-on : ubuntu-latest
19- steps :
20- - uses : actions/checkout@v3
21- - name : GitHub Action for SwiftLint
22- uses : norio-nomura/action-swiftlint@3.2.1
23- with :
24- args : --strict
25- env :
26- DIFF_BASE : ${{ github.base_ref }}
27- macOS :
26+ test-apple-platforms :
2827 name : ${{ matrix.name }}
2928 runs-on : ${{ matrix.runsOn }}
3029 env :
@@ -34,153 +33,45 @@ jobs:
3433 fail-fast : false
3534 matrix :
3635 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 "Atomic" -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 : Atomic
57- filename : ${{ matrix.name }}
58- token : ${{ secrets.CODECOV_TOKEN }}
36+ # macOS
37+ - { platform: macOS, name: "macOS 26, Xcode 26.0, Swift 6.2.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "platform=macOS" }
38+ - { platform: macOS, name: "macOS 14, Xcode 16.1, Swift 6.0.2", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "platform=macOS" }
39+ - { platform: macOS, name: "macOS 14, Xcode 15.4, Swift 5.10", xcode: "Xcode_15.4", runsOn: macOS-14, destination: "platform=macOS" }
5940
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 "Atomic" -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 : Atomic
98- filename : ${{ matrix.name }}
99- token : ${{ secrets.CODECOV_TOKEN }}
41+ # iOS
42+ - { platform: iOS, name: "iOS 26.0, Xcode 26.0, Swift 6.2.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "OS=26.0.1,name=iPhone 17 Pro" }
43+ - { platform: iOS, name: "iOS 18.1", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "OS=18.1,name=iPhone 16 Pro" }
44+ - { platform: iOS, name: "iOS 17.4", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=17.4,name=iPhone 15 Pro" }
10045
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 "Atomic" -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 : Atomic
139- filename : ${{ matrix.name }}
140- token : ${{ secrets.CODECOV_TOKEN }}
46+ # tvOS
47+ - { platform: tvOS, name: "tvOS 26.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "OS=26.0,name=Apple TV" }
48+ - { platform: tvOS, name: "tvOS 18.1", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "OS=18.1,name=Apple TV" }
49+ - { platform: tvOS, name: "tvOS 17.4", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=17.4,name=Apple TV" }
14150
142- watchOS :
143- name : ${{ matrix.name }}
144- runs-on : ${{ matrix.runsOn }}
145- env :
146- DEVELOPER_DIR : " /Applications/${{ matrix.xcode }}.app/Contents/Developer"
147- timeout-minutes : 20
148- strategy :
149- fail-fast : false
150- matrix :
151- include :
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
51+ # watchOS
52+ - { platform: watchOS, name: "watchOS 26.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "OS=26.0,name=Apple Watch Ultra 3 (49mm)" }
53+ - { platform: watchOS, name: "watchOS 11.1", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "OS=11.1,name=Apple Watch Series 10 (46mm)" }
54+ - { platform: watchOS, name: "watchOS 10.5", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=10.5,name=Apple Watch Series 9 (45mm)" }
55+ - { platform: watchOS, name: "watchOS 10.4", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=10.4,name=Apple Watch Series 9 (45mm)" }
17256 steps :
173- - uses : actions/checkout@v3
174- - name : ${{ matrix.name }}
175- run : xcodebuild test -scheme "Atomic" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
176- - name : Upload test coverage reports to Codecov
57+ - name : Checkout code
58+ uses : actions/checkout@v3
59+ - name : Run tests - ${{ matrix.name }}
60+ run : |
61+ xcodebuild test \
62+ -scheme "${{ env.SCHEME_NAME }}" \
63+ -destination "${{ matrix.destination }}" \
64+ -enableCodeCoverage YES \
65+ -resultBundlePath "test_output/${{ matrix.name }}.xcresult" \
66+ clean || exit 1
67+ - name : Upload test coverage to Codecov
17768 uses : space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main
17869 with :
179- scheme_name : Atomic
70+ scheme_name : ${{ env.SCHEME_NAME }}
18071 filename : ${{ matrix.name }}
18172 token : ${{ secrets.CODECOV_TOKEN }}
18273
183- spm :
74+ spm-build :
18475 name : ${{ matrix.name }}
18576 runs-on : ${{ matrix.runsOn }}
18677 env :
@@ -190,48 +81,29 @@ jobs:
19081 fail-fast : false
19182 matrix :
19283 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
84+ - { name: "macOS 26, SPM 6.2.0", xcode: "Xcode_26.0.1", runsOn: macOS-26 }
85+ - { name: "macOS 15, SPM 6.0.2", xcode: "Xcode_16.0", runsOn: macOS-15 }
86+ - { name: "macOS 14, SPM 6.0.2", xcode: "Xcode_16.1", runsOn: macOS-14 }
87+ - { name: "macOS 14, SPM 5.10.0", xcode: "Xcode_15.3", runsOn: macOS-14 }
20588 steps :
206- - uses : actions/checkout@v3
207- - name : ${{ matrix.name }}
89+ - name : Checkout code
90+ uses : actions/checkout@v3
91+ - name : Build with Swift Package Manager - ${{ matrix.name }}
20892 run : swift build -c release
20993
21094 merge-test-reports :
211- needs : [iOS, macOS, watchOS, tvOS]
212- runs-on : macos-13
95+ needs : test-apple-platforms
96+ runs-on : macos-15
21397 steps :
21498 - name : Download artifacts
21599 uses : actions/download-artifact@v4
216100 with :
217101 path : test_output
102+
218103 - run : xcrun xcresulttool merge test_output/**/*.xcresult --output-path test_output/final/final.xcresult
219- - name : Upload Merged Artifact
104+
105+ - name : Upload merged test results
220106 uses : actions/upload-artifact@v4
221107 with :
222108 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@v2
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/*"
109+ path : test_output/final
0 commit comments