@@ -22,8 +22,11 @@ concurrency:
2222 group : validator-${{ github.head_ref }}
2323 cancel-in-progress : true
2424
25+ env :
26+ SCHEME_NAME : " Validator-Package"
27+
2528jobs :
26- macOS :
29+ test-apple-platforms :
2730 name : ${{ matrix.name }}
2831 runs-on : ${{ matrix.runsOn }}
2932 env :
@@ -33,128 +36,44 @@ jobs:
3336 fail-fast : false
3437 matrix :
3538 include :
36- - xcode : " Xcode_26.0.1"
37- runsOn : macOS-26
38- name : " macOS 26, Xcode 26.0, Swift 6.2.0"
39- - xcode : " Xcode_16.1"
40- runsOn : macOS-14
41- name : " macOS 14, Xcode 16.1, Swift 6.0.2"
42- - xcode : " Xcode_15.4"
43- runsOn : macOS-14
44- name : " macOS 14, Xcode 15.4, Swift 5.10"
45- steps :
46- - uses : actions/checkout@v5
47- - name : ${{ matrix.name }}
48- run : xcodebuild test -scheme "Validator-Package" -destination "platform=macOS" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
49- - name : Upload test coverage reports to Codecov
50- uses : space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main
51- with :
52- scheme_name : Validator-Package
53- filename : ${{ matrix.name }}
54- token : ${{ secrets.CODECOV_TOKEN }}
39+ # macOS
40+ - { platform: macOS, name: "macOS 26, Xcode 26.0, Swift 6.2.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "platform=macOS" }
41+ - { platform: macOS, name: "macOS 14, Xcode 16.1, Swift 6.0.2", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "platform=macOS" }
42+ - { platform: macOS, name: "macOS 14, Xcode 15.4, Swift 5.10", xcode: "Xcode_15.4", runsOn: macOS-14, destination: "platform=macOS" }
5543
56- iOS :
57- name : ${{ matrix.name }}
58- runs-on : ${{ matrix.runsOn }}
59- env :
60- DEVELOPER_DIR : " /Applications/${{ matrix.xcode }}.app/Contents/Developer"
61- timeout-minutes : 20
62- strategy :
63- fail-fast : false
64- matrix :
65- include :
66- - destination : " OS=26.0.1,name=iPhone 17 Pro"
67- xcode : " Xcode_26.0.1"
68- runsOn : macOS-26
69- name : " OS=26.0, Xcode 26.0, Swift 6.2.0"
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=17.4,name=iPhone 15 Pro"
75- name : " iOS 17.4"
76- xcode : " Xcode_15.3"
77- runsOn : macos-14
78- steps :
79- - uses : actions/checkout@v5
80- - name : ${{ matrix.name }}
81- run : xcodebuild test -scheme "Validator-Package" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
82- - uses : actions/upload-artifact@v5
83- with :
84- name : ${{ matrix.name }}
85- path : test_output
44+ # iOS
45+ - { 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" }
46+ - { platform: iOS, name: "iOS 18.1", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "OS=18.1,name=iPhone 16 Pro" }
47+ - { platform: iOS, name: "iOS 17.4", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=17.4,name=iPhone 15 Pro" }
8648
87- tvOS :
88- name : ${{ matrix.name }}
89- runs-on : ${{ matrix.runsOn }}
90- env :
91- DEVELOPER_DIR : " /Applications/${{ matrix.xcode }}.app/Contents/Developer"
92- timeout-minutes : 20
93- strategy :
94- fail-fast : false
95- matrix :
96- include :
97- - destination : " OS=26.0,name=Apple TV"
98- xcode : " Xcode_26.0.1"
99- runsOn : macOS-26
100- name : " tvOS 26.0"
101- - destination : " OS=18.1,name=Apple TV"
102- name : " tvOS 18.1"
103- xcode : " Xcode_16.1"
104- runsOn : macOS-14
105- - destination : " OS=17.4,name=Apple TV"
106- name : " tvOS 17.4"
107- xcode : " Xcode_15.3"
108- runsOn : macos-14
109- steps :
110- - uses : actions/checkout@v5
111- - name : ${{ matrix.name }}
112- run : xcodebuild test -scheme "Validator-Package" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
113- - name : Upload test coverage reports to Codecov
114- uses : space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main
115- with :
116- scheme_name : Validator-Package
117- filename : ${{ matrix.name }}
118- token : ${{ secrets.CODECOV_TOKEN }}
49+ # tvOS
50+ - { platform: tvOS, name: "tvOS 26.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "OS=26.0,name=Apple TV" }
51+ - { platform: tvOS, name: "tvOS 18.1", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "OS=18.1,name=Apple TV" }
52+ - { platform: tvOS, name: "tvOS 17.4", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=17.4,name=Apple TV" }
11953
120- watchOS :
121- name : ${{ matrix.name }}
122- runs-on : ${{ matrix.runsOn }}
123- env :
124- DEVELOPER_DIR : " /Applications/${{ matrix.xcode }}.app/Contents/Developer"
125- timeout-minutes : 20
126- strategy :
127- fail-fast : false
128- matrix :
129- include :
130- - destination : " OS=26.0,name=Apple Watch Ultra 3 (49mm)"
131- xcode : " Xcode_26.0.1"
132- runsOn : macOS-26
133- name : " watchOS 26.0"
134- - destination : " OS=11.1,name=Apple Watch Series 10 (46mm)"
135- name : " watchOS 11.1"
136- xcode : " Xcode_16.1"
137- runsOn : macOS-14
138- - destination : " OS=10.5,name=Apple Watch Series 9 (45mm)"
139- name : " watchOS 10.5"
140- xcode : " Xcode_15.3"
141- runsOn : macOS-14
142- - destination : " OS=10.4,name=Apple Watch Series 9 (45mm)"
143- name : " watchOS 10.4"
144- xcode : " Xcode_15.3"
145- runsOn : macos-14
54+ # watchOS
55+ - { platform: watchOS, name: "watchOS 26.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "OS=26.0,name=Apple Watch Ultra 3 (49mm)" }
56+ - { platform: watchOS, name: "watchOS 11.1", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "OS=11.1,name=Apple Watch Series 10 (46mm)" }
57+ - { platform: watchOS, name: "watchOS 10.5", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=10.5,name=Apple Watch Series 9 (45mm)" }
58+ - { platform: watchOS, name: "watchOS 10.4", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=10.4,name=Apple Watch Series 9 (45mm)" }
14659 steps :
147- - uses : actions/checkout@v5
148- - name : ${{ matrix.name }}
149- run : xcodebuild test -scheme "Validator-Package" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
150- - name : Upload test coverage reports to Codecov
60+ - name : Checkout code
61+ uses : actions/checkout@v5
62+ - name : Run tests - ${{ matrix.name }}
63+ run : |
64+ xcodebuild test \
65+ -scheme "${{ env.SCHEME_NAME }}" \
66+ -destination "${{ matrix.destination }}" \
67+ -enableCodeCoverage YES \
68+ -resultBundlePath "test_output/${{ matrix.name }}.xcresult" \
69+ clean || exit 1
70+ - name : Upload test coverage to Codecov
15171 uses : space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main
15272 with :
153- scheme_name : Validator-Package
73+ scheme_name : ${{ env.SCHEME_NAME }}
15474 filename : ${{ matrix.name }}
15575 token : ${{ secrets.CODECOV_TOKEN }}
156-
157- spm :
76+ spm-build :
15877 name : ${{ matrix.name }}
15978 runs-on : ${{ matrix.runsOn }}
16079 env :
@@ -164,34 +83,30 @@ jobs:
16483 fail-fast : false
16584 matrix :
16685 include :
167- - destination : " macOS 26, SPM 6.2.0 Test"
168- xcode : " Xcode_26.0.1"
169- runsOn : macOS-26
170- - destination : " macOS 15, SPM 6.0.2 Test"
171- xcode : " Xcode_16.0"
172- runsOn : macOS-15
173- - name : " macOS 14, SPM 6.0.2 Test"
174- xcode : " Xcode_16.1"
175- runsOn : macOS-14
176- - name : " macOS 14, SPM 5.10.0 Test"
177- xcode : " Xcode_15.3"
178- runsOn : macos-14
86+ - { name: "macOS 26, SPM 6.2.0", xcode: "Xcode_26.0.1", runsOn: macOS-26 }
87+ - { name: "macOS 15, SPM 6.0.2", xcode: "Xcode_16.0", runsOn: macOS-15 }
88+ - { name: "macOS 14, SPM 6.0.2", xcode: "Xcode_16.1", runsOn: macOS-14 }
89+ - { name: "macOS 14, SPM 5.10.0", xcode: "Xcode_15.3", runsOn: macOS-14 }
17990 steps :
180- - uses : actions/checkout@v5
181- - name : ${{ matrix.name }}
91+ - name : Checkout code
92+ uses : actions/checkout@v5
93+ - name : Build with Swift Package Manager - ${{ matrix.name }}
18294 run : swift build -c release
18395
18496 merge-test-reports :
185- needs : [iOS, macOS, watchOS, tvOS]
97+ needs : test-apple-platforms
18698 runs-on : macos-15
18799 steps :
188100 - name : Download artifacts
189101 uses : actions/download-artifact@v6
190102 with :
191103 path : test_output
104+
192105 - run : xcrun xcresulttool merge test_output/**/*.xcresult --output-path test_output/final/final.xcresult
193- - name : Upload Merged Artifact
106+
107+ - name : Upload merged test results
194108 uses : actions/upload-artifact@v5
195109 with :
196- name : MergedResult
110+ name : MergedTestResults
197111 path : test_output/final
112+ retention-days : 30
0 commit comments