Skip to content

Commit 352dbdd

Browse files
committed
refactor: simplify CI workflow configuration
1 parent 43ef2f7 commit 352dbdd

File tree

2 files changed

+54
-132
lines changed

2 files changed

+54
-132
lines changed

.github/workflows/ci.yml

Lines changed: 47 additions & 132 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
2528
jobs:
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

.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)