Skip to content

Commit 884251f

Browse files
authored
Update CI workflow to test with --traits AsyncHTTPClient (#148)
* Update CI workflow to run Linux directly on container * Attempt to resolve hashFiles issue * Add --traits AsyncHTTPClient to test matrix * Resolve warning about try with non-throwing expression * Temporarily disable failing case in CI matrix
1 parent 0392da5 commit 884251f

2 files changed

Lines changed: 44 additions & 18 deletions

File tree

.github/workflows/ci.yml

Lines changed: 42 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ permissions:
1212

1313
jobs:
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) || '' }}

Tests/AnyLanguageModelTests/InstructionsTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ struct InstructionsTests {
1616
}
1717

1818
@Test func builderCombinesLines() throws {
19-
let instructions = try Instructions {
19+
let instructions = Instructions {
2020
"First line"
2121
"Second line"
2222
}
@@ -28,7 +28,7 @@ struct InstructionsTests {
2828
let includeConditional = true
2929
let includeOptional = false
3030

31-
let instructions = try Instructions {
31+
let instructions = Instructions {
3232
"Always"
3333
if includeConditional {
3434
"Conditional"

0 commit comments

Comments
 (0)