@@ -12,7 +12,7 @@ permissions:
1212
1313jobs :
1414 test-macos :
15- name : Swift ${{ matrix.swift }} on macOS ${{ matrix.macos }} with Xcode ${{ matrix.xcode }}
15+ name : Swift ${{ matrix.swift }} on macOS ${{ matrix.macos }} with Xcode ${{ matrix.xcode }}${{ matrix.traits != '' && format(' and --traits {0}', matrix.traits) || '' }}
1616 runs-on : macos-${{ matrix.macos }}
1717 env :
1818 DEVELOPER_DIR : " /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer"
@@ -23,56 +23,82 @@ jobs:
2323 - macos : " 15"
2424 swift : " 6.1"
2525 xcode : " 16.3"
26+ traits : " "
27+ - macos : " 15"
28+ swift : " 6.1"
29+ xcode : " 16.3"
30+ traits : " AsyncHTTPClient"
31+ - macos : " 26"
32+ swift : " 6.2"
33+ xcode : " 26.0"
34+ traits : " "
2635 - macos : " 26"
2736 swift : " 6.2"
2837 xcode : " 26.0"
38+ traits : " AsyncHTTPClient"
2939 timeout-minutes : 10
3040 steps :
3141 - name : Checkout code
32- uses : actions/checkout@v4
42+ uses : actions/checkout@v6
3343
3444 - name : Cache Swift Package Manager dependencies
35- uses : actions/cache@v4
45+ uses : actions/cache@v5
3646 with :
3747 path : |
3848 ~/.cache/org.swift.swiftpm
3949 .build
40- key : ${{ runner.os }}-swift-${{ matrix.swift }}-spm-${{ hashFiles('**/ Package.resolved') }}
50+ key : ${{ runner.os }}-swift-${{ matrix.swift }}-${{ matrix.traits == '' && 'ahc-off' || 'ahc-on' }}- spm-${{ hashFiles('Package.swift', ' Package.resolved') }}
4151 restore-keys : |
42- ${{ runner.os }}-swift-${{ matrix.swift }}-spm-
52+ ${{ runner.os }}-swift-${{ matrix.swift }}-${{ matrix.traits == '' && 'ahc-off' || 'ahc-on' }}- spm-
4353
4454 - name : Lint
4555 run : swift format lint --strict --recursive .
4656
4757 - name : Build
48- run : swift build --build-tests --traits MLX,Llama,CoreML
58+ run : swift build --build-tests --traits MLX,Llama,CoreML${{ matrix.traits != '' && format(',{0}', matrix.traits) || '' }}
4959
5060 - name : Test
51- run : swift test --skip-build
61+ run : swift test --skip-build --traits MLX,Llama,CoreML${{ matrix.traits != '' && format(',{0}', matrix.traits) || '' }}
5262
5363 test-linux :
54- name : Swift ${{ matrix.swift-version }} on Linux
64+ name : Swift ${{ matrix.swift }} on Linux${{ matrix.traits != '' && format(' and --traits {0}', matrix.traits) || '' }}
5565 runs-on : ubuntu-latest
66+ container : swift:${{ matrix.swift }}
5667 strategy :
5768 fail-fast : false
5869 matrix :
59- swift-version :
60- - 6.1.0
70+ include :
71+ - swift : " 6.1.3"
72+ traits : " "
73+ # Temporary workaround: Skip AsyncHTTPClient on Linux Swift 6.1
74+ # due to toolchain linker failure in libswiftObservation.so (undefined swift::threading::fatal).
75+ # Keep AsyncHTTPClient coverage on Linux Swift 6.2 and re-enable here once fixed upstream.
76+ # - swift: "6.1.3"
77+ # traits: "AsyncHTTPClient"
78+ - swift : " 6.2.4"
79+ traits : " "
80+ - swift : " 6.2.4"
81+ traits : " AsyncHTTPClient"
6182 timeout-minutes : 10
6283 steps :
6384 - name : Checkout code
64- uses : actions/checkout@v4
85+ uses : actions/checkout@v6
6586
66- - name : Setup Swift
67- uses : vapor/swiftly-action@v0.2
87+ - name : Cache Swift Package Manager dependencies
88+ uses : actions/cache@v5
6889 with :
69- toolchain : ${{ matrix.swift-version }}
90+ path : |
91+ ~/.cache/org.swift.swiftpm
92+ .build
93+ key : ${{ runner.os }}-swift-${{ matrix.swift }}-${{ matrix.traits == '' && 'ahc-off' || 'ahc-on' }}-spm-${{ hashFiles('Package.swift', 'Package.resolved') }}
94+ restore-keys : |
95+ ${{ runner.os }}-swift-${{ matrix.swift }}-${{ matrix.traits == '' && 'ahc-off' || 'ahc-on' }}-spm-
7096
7197 - name : Lint
7298 run : swift format lint --strict --recursive .
7399
74100 - name : Build
75- run : swift build
101+ run : swift build${{ matrix.traits != '' && format(' --traits {0}', matrix.traits) || '' }}
76102
77103 - name : Test
78- run : swift test
104+ run : swift test${{ matrix.traits != '' && format(' --traits {0}', matrix.traits) || '' }}
0 commit comments