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 : concurrency-${{ github.head_ref }}
20+ cancel-in-progress : true
21+
22+ env :
23+ SCHEME_NAME : " Concurrency-Package"
24+
1625jobs :
17- SwiftLint :
26+ swiftlint :
27+ name : SwiftLint
1828 runs-on : ubuntu-latest
1929 steps :
20- - uses : actions/checkout@v3
30+ - name : Checkout code
31+ uses : actions/checkout@v3
2132 - name : GitHub Action for SwiftLint
2233 uses : norio-nomura/action-swiftlint@3.2.1
2334 with :
2435 args : --strict
2536 env :
2637 DIFF_BASE : ${{ github.base_ref }}
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_16.2"
38- runsOn : macOS-14
39- name : " macOS 14, Xcode 16.2, 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 "Concurrency-Package" -destination "platform=macOS" clean || exit 1
5338
54- iOS :
39+ test-apple-platforms :
5540 name : ${{ matrix.name }}
5641 runs-on : ${{ matrix.runsOn }}
5742 env :
@@ -61,90 +46,39 @@ jobs:
6146 fail-fast : false
6247 matrix :
6348 include :
64- - destination : " OS=18.1,name=iPhone 16 Pro"
65- name : " iOS 18.1"
66- xcode : " Xcode_16.1"
67- runsOn : macOS-14
68- - destination : " OS=17.5,name=iPhone 15 Pro"
69- name : " iOS 17.5"
70- xcode : " Xcode_15.4"
71- runsOn : macOS-14
72- - destination : " OS=17.0.1,name=iPhone 14 Pro"
73- name : " iOS 17.0.1"
74- xcode : " Xcode_15.0"
75- runsOn : macos-13
76- - destination : " OS=16.4,name=iPhone 14 Pro"
77- name : " iOS 16.4"
78- xcode : " Xcode_14.3.1"
79- runsOn : macos-13
80- steps :
81- - uses : actions/checkout@v3
82- - name : ${{ matrix.name }}
83- run : xcodebuild test -scheme "Concurrency-Package" -destination "${{ matrix.destination }}" clean || exit 1
49+ # macOS
50+ - { platform: macOS, name: "macOS 26, Xcode 26.0, Swift 6.2.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "platform=macOS" }
51+ - { platform: macOS, name: "macOS 14, Xcode 16.1, Swift 6.0.2", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "platform=macOS" }
52+ - { platform: macOS, name: "macOS 14, Xcode 15.4, Swift 5.10", xcode: "Xcode_15.4", runsOn: macOS-14, destination: "platform=macOS" }
8453
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=18.1,name=Apple TV"
96- name : " tvOS 18.1"
97- xcode : " Xcode_16.1"
98- runsOn : macOS-14
99- - destination : " OS=17.5,name=Apple TV"
100- name : " tvOS 17.5"
101- xcode : " Xcode_15.4"
102- runsOn : macOS-14
103- - destination : " OS=17.0,name=Apple TV"
104- name : " tvOS 17.0"
105- xcode : " Xcode_15.0"
106- runsOn : macos-13
107- - destination : " OS=16.4,name=Apple TV"
108- name : " tvOS 16.4"
109- xcode : " Xcode_14.3.1"
110- runsOn : macos-13
111- steps :
112- - uses : actions/checkout@v3
113- - name : ${{ matrix.name }}
114- run : xcodebuild test -scheme "Concurrency-Package" -destination "${{ matrix.destination }}" clean || exit 1
54+ # iOS
55+ - { 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" }
56+ - { platform: iOS, name: "iOS 18.1", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "OS=18.1,name=iPhone 16 Pro" }
57+ - { platform: iOS, name: "iOS 17.4", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=17.4,name=iPhone 15 Pro" }
11558
116- watchOS :
117- name : ${{ matrix.name }}
118- runs-on : ${{ matrix.runsOn }}
119- env :
120- DEVELOPER_DIR : " /Applications/${{ matrix.xcode }}.app/Contents/Developer"
121- timeout-minutes : 20
122- strategy :
123- fail-fast : false
124- matrix :
125- include :
126- - destination : " OS=11.1,name=Apple Watch Series 10 (46mm)"
127- name : " watchOS 11.1"
128- xcode : " Xcode_16.1"
129- runsOn : macOS-14
130- - destination : " OS=10.5,name=Apple Watch Series 9 (45mm)"
131- name : " watchOS 10.5"
132- xcode : " Xcode_15.4"
133- runsOn : macOS-14
134- - destination : " OS=10.0,name=Apple Watch Series 9 (45mm)"
135- name : " watchOS 10.0"
136- xcode : " Xcode_15.0"
137- runsOn : macos-13
138- - destination : " OS=9.4,name=Apple Watch Series 8 (45mm)"
139- name : " watchOS 9.4"
140- xcode : " Xcode_14.3.1"
141- runsOn : macos-13
59+ # tvOS
60+ - { platform: tvOS, name: "tvOS 26.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "OS=26.0,name=Apple TV" }
61+ - { platform: tvOS, name: "tvOS 18.1", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "OS=18.1,name=Apple TV" }
62+ - { platform: tvOS, name: "tvOS 17.4", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=17.4,name=Apple TV" }
63+
64+ # watchOS
65+ - { platform: watchOS, name: "watchOS 26.0", xcode: "Xcode_26.0.1", runsOn: macOS-26, destination: "OS=26.0,name=Apple Watch Ultra 3 (49mm)" }
66+ - { platform: watchOS, name: "watchOS 11.1", xcode: "Xcode_16.1", runsOn: macOS-14, destination: "OS=11.1,name=Apple Watch Series 10 (46mm)" }
67+ - { platform: watchOS, name: "watchOS 10.5", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=10.5,name=Apple Watch Series 9 (45mm)" }
68+ - { platform: watchOS, name: "watchOS 10.4", xcode: "Xcode_15.3", runsOn: macOS-14, destination: "OS=10.4,name=Apple Watch Series 9 (45mm)" }
14269 steps :
143- - uses : actions/checkout@v3
144- - name : ${{ matrix.name }}
145- run : xcodebuild test -scheme "Concurrency-Package" -destination "${{ matrix.destination }}" clean || exit 1
70+ - name : Checkout code
71+ uses : actions/checkout@v3
72+ - name : Run tests - ${{ matrix.name }}
73+ run : |
74+ xcodebuild test \
75+ -scheme "${{ env.SCHEME_NAME }}" \
76+ -destination "${{ matrix.destination }}" \
77+ -enableCodeCoverage YES \
78+ -resultBundlePath "test_output/${{ matrix.name }}.xcresult" \
79+ clean || exit 1
14680
147- spm :
81+ spm-build :
14882 name : ${{ matrix.name }}
14983 runs-on : ${{ matrix.runsOn }}
15084 env :
@@ -154,30 +88,12 @@ jobs:
15488 fail-fast : false
15589 matrix :
15690 include :
157- - name : " macOS 14, SPM 6.0.2 Test"
158- xcode : " Xcode_16.1"
159- runsOn : macOS-14
160- - name : " macOS 14, SPM 5.9.0 Test"
161- xcode : " Xcode_15.0"
162- runsOn : macos-14
163- - name : " macOS 13, SPM 5.8.1 Test"
164- xcode : " Xcode_14.3.1"
165- runsOn : macos-13
91+ - { name: "macOS 26, SPM 6.2.0", xcode: "Xcode_26.0.1", runsOn: macOS-26 }
92+ - { name: "macOS 15, SPM 6.0.2", xcode: "Xcode_16.0", runsOn: macOS-15 }
93+ - { name: "macOS 14, SPM 6.0.2", xcode: "Xcode_16.1", runsOn: macOS-14 }
94+ - { name: "macOS 14, SPM 5.10.0", xcode: "Xcode_15.3", runsOn: macOS-14 }
16695 steps :
167- - uses : actions/checkout@v3
168- - name : ${{ matrix.name }}
169- run : swift build -c release
170-
171- discover-typos :
172- name : Discover Typos
173- runs-on : macOS-13
174- env :
175- DEVELOPER_DIR : /Applications/Xcode_14.1.app/Contents/Developer
176- steps :
177- - uses : actions/checkout@v4
178- - name : Discover typos
179- run : |
180- export PATH="$PATH:/Library/Frameworks/Python.framework/Versions/3.11/bin"
181- python3 -m pip install --upgrade pip
182- python3 -m pip install codespell
183- codespell --ignore-words-list="hart,inout,msdos,sur" --skip="./.build/*,./.git/*"
96+ - name : Checkout code
97+ uses : actions/checkout@v3
98+ - name : Build with Swift Package Manager - ${{ matrix.name }}
99+ run : swift build -c release
0 commit comments