1- name : network-layer
1+ name : " network-layer"
22
33on :
44 push :
55 branches :
66 - main
7- - dev
7+ paths :
8+ - ' .swiftlint.yml'
9+ - " .github/workflows/**"
10+ - " Package.swift"
11+ - " Source/**"
12+ - " Tests/**"
813 pull_request :
914 paths :
1015 - ' .swiftlint.yml'
1318 - " Source/**"
1419 - " Tests/**"
1520
21+ permissions :
22+ contents : read
23+
24+ concurrency :
25+ group : network-layer-${{ github.head_ref }}
26+ cancel-in-progress : true
27+
28+ env :
29+ SCHEME_NAME : " NetworkLayer"
30+
1631jobs :
17- macOS :
32+ test-apple-platforms :
1833 name : ${{ matrix.name }}
1934 runs-on : ${{ matrix.runsOn }}
2035 env :
@@ -24,141 +39,45 @@ jobs:
2439 fail-fast : false
2540 matrix :
2641 include :
27- - xcode : " Xcode_16.1"
28- runsOn : macOS-14
29- name : " macOS 14, Xcode 16.1, Swift 6.0.2"
30- - xcode : " Xcode_15.4"
31- runsOn : macOS-14
32- name : " macOS 14, Xcode 15.4, Swift 5.10"
33- - xcode : " Xcode_15.0"
34- runsOn : macos-13
35- name : " macOS 13, Xcode 15.0, Swift 5.9.0"
36- - xcode : " Xcode_14.3.1"
37- runsOn : macos-13
38- name : " macOS 13, Xcode 14.3.1, Swift 5.8.0"
39- steps :
40- - uses : actions/checkout@v4
41- - name : ${{ matrix.name }}
42- run : xcodebuild test -scheme "NetworkLayer" -destination "platform=macOS" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
43- - name : Upload test coverage reports to Codecov
44- uses : space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main
45- with :
46- scheme_name : NetworkLayer
47- filename : ${{ matrix.name }}
48- token : ${{ secrets.CODECOV_TOKEN }}
42+ # macOS
43+ - { platform: macOS, name: "macOS 26, Xcode 26.0, Swift 6.2.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "platform=macOS" }
44+ - { platform: macOS, name: "macOS 14, Xcode 16.1, Swift 6.0.2", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "platform=macOS" }
45+ - { platform: macOS, name: "macOS 14, Xcode 15.4, Swift 5.10", xcode: "Xcode_15.4", runsOn: macOS-14, destination: "platform=macOS" }
4946
50- iOS :
51- name : ${{ matrix.name }}
52- runs-on : ${{ matrix.runsOn }}
53- env :
54- DEVELOPER_DIR : " /Applications/${{ matrix.xcode }}.app/Contents/Developer"
55- timeout-minutes : 20
56- strategy :
57- fail-fast : false
58- matrix :
59- include :
60- - destination : " OS=18.1,name=iPhone 16 Pro"
61- name : " iOS 18.1"
62- xcode : " Xcode_16.1"
63- runsOn : macOS-14
64- - destination : " OS=17.5,name=iPhone 15 Pro"
65- name : " iOS 17.5"
66- xcode : " Xcode_15.4"
67- runsOn : macOS-14
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@v4
78- - name : ${{ matrix.name }}
79- run : xcodebuild test -scheme "NetworkLayer" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
80- - name : Upload test coverage reports to Codecov
81- uses : space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main
82- with :
83- scheme_name : NetworkLayer
84- filename : ${{ matrix.name }}
85- token : ${{ secrets.CODECOV_TOKEN }}
47+ # iOS
48+ - { 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" }
49+ - { platform: iOS, name: "iOS 18.1", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "OS=18.1,name=iPhone 16 Pro" }
50+ - { platform: iOS, name: "iOS 17.4", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=17.4,name=iPhone 15 Pro" }
8651
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=18.1,name=Apple TV"
98- name : " tvOS 18.1"
99- xcode : " Xcode_16.1"
100- runsOn : macOS-14
101- - destination : " OS=17.5,name=Apple TV"
102- name : " tvOS 17.5"
103- xcode : " Xcode_15.4"
104- runsOn : macOS-14
105- - destination : " OS=17.0,name=Apple TV"
106- name : " tvOS 17.0"
107- xcode : " Xcode_15.0"
108- runsOn : macos-13
109- - destination : " OS=16.4,name=Apple TV"
110- name : " tvOS 16.4"
111- xcode : " Xcode_14.3.1"
112- runsOn : macos-13
113- steps :
114- - uses : actions/checkout@v4
115- - name : ${{ matrix.name }}
116- run : xcodebuild test -scheme "NetworkLayer" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
117- - name : Upload test coverage report to Codecov
118- uses : space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main
119- with :
120- scheme_name : NetworkLayer
121- filename : ${{ matrix.name }}
122- token : ${{ secrets.CODECOV_TOKEN }}
52+ # tvOS
53+ - { platform: tvOS, name: "tvOS 26.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "OS=26.0,name=Apple TV" }
54+ - { platform: tvOS, name: "tvOS 18.1", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "OS=18.1,name=Apple TV" }
55+ - { platform: tvOS, name: "tvOS 17.4", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=17.4,name=Apple TV" }
12356
124- watchOS :
125- name : ${{ matrix.name }}
126- runs-on : ${{ matrix.runsOn }}
127- env :
128- DEVELOPER_DIR : " /Applications/${{ matrix.xcode }}.app/Contents/Developer"
129- timeout-minutes : 20
130- strategy :
131- fail-fast : false
132- matrix :
133- include :
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.4"
141- runsOn : macOS-14
142- - destination : " OS=10.0,name=Apple Watch Series 9 (45mm)"
143- name : " watchOS 10.0"
144- xcode : " Xcode_15.0"
145- runsOn : macos-13
146- - destination : " OS=9.4,name=Apple Watch Series 8 (45mm)"
147- name : " watchOS 9.4"
148- xcode : " Xcode_14.3.1"
149- runsOn : macos-13
57+ # watchOS
58+ - { platform: watchOS, name: "watchOS 26.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "OS=26.0,name=Apple Watch Ultra 3 (49mm)" }
59+ - { platform: watchOS, name: "watchOS 11.1", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "OS=11.1,name=Apple Watch Series 10 (46mm)" }
60+ - { platform: watchOS, name: "watchOS 10.5", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=10.5,name=Apple Watch Series 9 (45mm)" }
61+ - { platform: watchOS, name: "watchOS 10.4", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=10.4,name=Apple Watch Series 9 (45mm)" }
15062 steps :
151- - uses : actions/checkout@v4
152- - name : ${{ matrix.name }}
153- run : xcodebuild test -scheme "NetworkLayer" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1
154- - name : Upload test coverage reports to Codecov
63+ - name : Checkout code
64+ uses : actions/checkout@v4
65+ - name : Run tests - ${{ matrix.name }}
66+ run : |
67+ xcodebuild test \
68+ -scheme "${{ env.SCHEME_NAME }}" \
69+ -destination "${{ matrix.destination }}" \
70+ -enableCodeCoverage YES \
71+ -resultBundlePath "test_output/${{ matrix.name }}.xcresult" \
72+ clean || exit 1
73+ - name : Upload test coverage to Codecov
15574 uses : space-code/oss-common-actions/.github/actions/upload_test_coverage_report@main
15675 with :
157- scheme_name : NetworkLayer
76+ scheme_name : ${{ env.SCHEME_NAME }}
15877 filename : ${{ matrix.name }}
15978 token : ${{ secrets.CODECOV_TOKEN }}
16079
161- spm :
80+ spm-build :
16281 name : ${{ matrix.name }}
16382 runs-on : ${{ matrix.runsOn }}
16483 env :
@@ -168,45 +87,43 @@ jobs:
16887 fail-fast : false
16988 matrix :
17089 include :
171- - name : " macOS 14, SPM 6.0.2 Test"
172- xcode : " Xcode_16.1"
173- runsOn : macOS-14
174- - name : " macOS 14, SPM 5.9.0 Test"
175- xcode : " Xcode_15.0"
176- runsOn : macos-14
177- - name : " macOS 13, SPM 5.8.1 Test"
178- xcode : " Xcode_14.3.1"
179- runsOn : macos-13
90+ - { name: "macOS 26, SPM 6.2.0", xcode: "Xcode_26.0.1", runsOn: macOS-26 }
91+ - { name: "macOS 15, SPM 6.0.2", xcode: "Xcode_16.0", runsOn: macOS-15 }
92+ - { name: "macOS 14, SPM 6.0.2", xcode: "Xcode_16.1", runsOn: macOS-14 }
93+ - { name: "macOS 14, SPM 5.10.0", xcode: "Xcode_15.3", runsOn: macOS-14 }
18094 steps :
181- - uses : actions/checkout@v4
182- - name : ${{ matrix.name }}
95+ - name : Checkout code
96+ uses : actions/checkout@v4
97+ - name : Build with Swift Package Manager - ${{ matrix.name }}
18398 run : swift build -c release --target NetworkLayer
18499
185100 merge-test-reports :
186- needs : [iOS, macOS, watchOS, tvOS]
101+ needs : test-apple-platforms
187102 runs-on : macos-13
188103 steps :
189104 - name : Download artifacts
190105 uses : actions/download-artifact@v4
191106 with :
192107 path : test_output
193108 - run : xcrun xcresulttool merge test_output/**/*.xcresult --output-path test_output/final/final.xcresult
194- - name : Upload Merged Artifact
109+ - name : Upload merged test results
195110 uses : actions/upload-artifact@v4
196111 with :
197- name : MergedResult
112+ name : MergedTestResults
198113 path : test_output/final
114+ retention-days : 30
199115
200116 discover-typos :
201117 name : Discover Typos
202- runs-on : macOS -13
118+ runs-on : macos -13
203119 env :
204120 DEVELOPER_DIR : /Applications/Xcode_14.1.app/Contents/Developer
205121 steps :
206- - uses : actions/checkout@v4
122+ - name : Checkout code
123+ uses : actions/checkout@v4
207124 - name : Discover typos
208125 run : |
209126 export PATH="$PATH:/Library/Frameworks/Python.framework/Versions/3.11/bin"
210127 python3 -m pip install --upgrade pip
211128 python3 -m pip install codespell
212- codespell --ignore-words-list="hart,inout,msdos,sur" --skip="./.build/*,./.git/*"
129+ codespell --ignore-words-list="hart,inout,msdos,sur" --skip="./.build/*,./.git/*"
0 commit comments