@@ -28,29 +28,41 @@ jobs:
2828 if : ${{ !contains(github.event.head_commit.message, 'ci skip') }}
2929 outputs :
3030 full-matrix : ${{ steps.set-matrix.outputs.full-matrix }}
31- ubuntu-matrix : ${{ steps.set-matrix.outputs.ubuntu-matrix }}
31+ ubuntu-os : ${{ steps.set-matrix.outputs.ubuntu-os }}
32+ ubuntu-swift : ${{ steps.set-matrix.outputs.ubuntu-swift }}
33+ ubuntu-type : ${{ steps.set-matrix.outputs.ubuntu-type }}
3234 steps :
3335 - name : Determine build matrix
3436 id : set-matrix
3537 run : |
3638 if [[ "${{ github.ref }}" == "refs/heads/main" || "${{ github.event_name }}" == "pull_request" ]]; then
3739 echo "full-matrix=true" >> "$GITHUB_OUTPUT"
38- echo 'ubuntu-matrix={"os":["noble","jammy"],"swift":[{"version":"6.0"},{"version":"6.1"},{"version":"6.2"},{"version":"6.3"}]}' >> "$GITHUB_OUTPUT"
40+ echo 'ubuntu-os=["noble","jammy"]' >> "$GITHUB_OUTPUT"
41+ echo 'ubuntu-swift=[{"version":"6.0"},{"version":"6.1"},{"version":"6.2"},{"version":"6.3"}]' >> "$GITHUB_OUTPUT"
42+ echo 'ubuntu-type=["","wasm","wasm-embedded"]' >> "$GITHUB_OUTPUT"
3943 else
4044 echo "full-matrix=false" >> "$GITHUB_OUTPUT"
41- echo 'ubuntu-matrix={"os":["noble"],"swift":[{"version":"6.3"}]}' >> "$GITHUB_OUTPUT"
45+ echo 'ubuntu-os=["noble"]' >> "$GITHUB_OUTPUT"
46+ echo 'ubuntu-swift=[{"version":"6.3"}]' >> "$GITHUB_OUTPUT"
47+ echo 'ubuntu-type=[""]' >> "$GITHUB_OUTPUT"
4248 fi
4349
4450 build-ubuntu :
4551 name : Build on Ubuntu
4652 needs : [configure]
4753 runs-on : ubuntu-latest
48- container : ${{ matrix.swift.nightly && format('swiftlang/swift:nightly-{0}-{1}', matrix.swift.version, matrix.os) || format('swift:{0}-{1}', matrix.swift.version, matrix.os) }}
54+ container : ${{ (matrix.type == 'wasm' || matrix.type == 'wasm-embedded') && 'swift:6.3-noble' || matrix.swift.nightly && format('swiftlang/swift:nightly-{0}-{1}', matrix.swift.version, matrix.os) || format('swift:{0}-{1}', matrix.swift.version, matrix.os) }}
4955 strategy :
50- matrix : ${{ fromJSON(needs.configure.outputs.ubuntu-matrix) }}
56+ matrix :
57+ os : ${{ fromJSON(needs.configure.outputs.ubuntu-os) }}
58+ swift : ${{ fromJSON(needs.configure.outputs.ubuntu-swift) }}
59+ type : ${{ fromJSON(needs.configure.outputs.ubuntu-type) }}
5160 steps :
5261 - uses : actions/checkout@v6
5362 - uses : brightdigit/swift-build@v1.5.2
63+ with :
64+ type : ${{ matrix.type }}
65+ wasmtime-version : 41.0.3
5466 - uses : sersoft-gmbh/swift-coverage-action@v5
5567 id : coverage-files
5668 with :
7486 matrix :
7587 runs-on : [windows-2022, windows-2025]
7688 include :
77- - swift-version : swift-6.2-branch
78- swift-build : 6.2-DEVELOPMENT-SNAPSHOT-2025-09-06-a
89+ - swift-version : swift-6.3-release
90+ swift-build : 6.3-RELEASE
91+ - swift-version : swift-6.2-release
92+ swift-build : 6.2-RELEASE
7993 - swift-version : swift-6.1-release
8094 swift-build : 6.1-RELEASE
8195 steps :
@@ -105,8 +119,8 @@ jobs:
105119 matrix :
106120 include :
107121 # SPM Build
108- - runs-on : macos-15
109- xcode : " /Applications/Xcode_26.0 .app"
122+ - runs-on : macos-26
123+ xcode : " /Applications/Xcode_26.4 .app"
110124
111125 steps :
112126 - uses : actions/checkout@v6
@@ -153,36 +167,36 @@ jobs:
153167
154168 # macOS Build
155169 - type : macos
156- runs-on : macos-15
170+ runs-on : macos-26
157171 xcode : " /Applications/Xcode_26.4.app"
158172
159173 # iOS Build Matrix
160174 - type : ios
161- runs-on : macos-15
175+ runs-on : macos-26
162176 xcode : " /Applications/Xcode_26.4.app"
163177 deviceName : " iPhone 17 Pro"
164178 osVersion : " 26.4"
165179 download-platform : true
166180
167181 # watchOS Build Matrix
168182 - type : watchos
169- runs-on : macos-15
183+ runs-on : macos-26
170184 xcode : " /Applications/Xcode_26.4.app"
171185 deviceName : " Apple Watch Ultra 3 (49mm)"
172186 osVersion : " 26.4"
173187 download-platform : true
174188
175189 # tvOS Build Matrix
176190 - type : tvos
177- runs-on : macos-15
191+ runs-on : macos-26
178192 xcode : " /Applications/Xcode_26.4.app"
179193 deviceName : " Apple TV"
180194 osVersion : " 26.4"
181195 download-platform : true
182196
183197 # visionOS Build Matrix
184198 - type : visionos
185- runs-on : macos-15
199+ runs-on : macos-26
186200 xcode : " /Applications/Xcode_26.4.app"
187201 deviceName : " Apple Vision Pro"
188202 osVersion : " 26.4"
@@ -216,28 +230,46 @@ jobs:
216230 needs : [configure]
217231 if : needs.configure.outputs.full-matrix == 'true'
218232 runs-on : ubuntu-latest
233+ strategy :
234+ fail-fast : false
235+ matrix :
236+ swift :
237+ - version : " 6.2"
238+ - version : " 6.3"
239+ android-api-level : [33, 34]
219240 steps :
220241 - uses : actions/checkout@v6
242+ - name : Free disk space
243+ uses : jlumbroso/free-disk-space@v1.3.1
244+ with :
245+ tool-cache : false
246+ android : false
247+ dotnet : true
248+ haskell : true
249+ large-packages : true
250+ docker-images : true
251+ swap-storage : true
221252 - uses : brightdigit/swift-build@v1.5.2
253+ id : build
222254 with :
223255 type : android
224-
225- build-wasm :
226- name : Build for WASM
227- needs : [configure]
228- if : needs.configure.outputs.full-matrix == 'true'
229- runs-on : ubuntu-latest
230- steps :
231- - uses : actions/checkout@v6
232- - uses : brightdigit/swift-build@v1.5.2
256+ android-swift-version : ${{ matrix.swift.version }}
257+ android-api-level : ${{ matrix.android-api-level }}
258+ android-run-tests : true
259+ - name : Upload coverage to Codecov
260+ if : steps.build.outputs.contains-code-coverage == 'true'
261+ uses : codecov/codecov-action@v6
233262 with :
234- type : wasm
263+ fail_ci_if_error : true
264+ flags : android-api${{ matrix.android-api-level }}-swift${{ matrix.swift.version }}
265+ verbose : true
266+ token : ${{ secrets.CODECOV_TOKEN }}
235267
236268 lint :
237269 name : Linting
238270 if : ${{ !cancelled() && !failure() && !contains(github.event.head_commit.message, 'ci skip') }}
239271 runs-on : ubuntu-latest
240- needs : [build-ubuntu, build-macos, build-windows, build-macos-full, build-android, build-wasm ]
272+ needs : [build-ubuntu, build-macos, build-windows, build-macos-full, build-android]
241273 env :
242274 MINT_PATH : .mint/lib
243275 MINT_LINK_PATH : .mint/bin
@@ -267,7 +299,7 @@ jobs:
267299 docs :
268300 name : Documentation Validation
269301 if : ${{ !cancelled() && !failure() && !contains(github.event.head_commit.message, 'ci skip') }}
270- needs : [build-ubuntu, build-macos, build-windows, build-macos-full, build-android, build-wasm ]
302+ needs : [build-ubuntu, build-macos, build-windows, build-macos-full, build-android]
271303 runs-on : ubuntu-latest
272304 steps :
273305 - uses : actions/checkout@v6
0 commit comments