-
Notifications
You must be signed in to change notification settings - Fork 1
132 lines (123 loc) · 4.78 KB
/
Copy pathswift.yml
File metadata and controls
132 lines (123 loc) · 4.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
---
name: Swift
on:
push:
branches:
- main
pull_request:
branches:
- main
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
# Analog to Cocoanetics/ShellKit's swift.yml (SQLiteKit's standalone-library
# peer). Apple platforms in CI: macOS / iOS / watchOS — tvOS and visionOS are
# not built here (iOS coverage is sufficient for the Apple-embedded story).
# Plus Linux / Windows / Android. No external-C provisioning on any platform
# (no brew / apt / vcpkg): the SQLite engine is vendored, so there are no
# system libraries to install.
#
# The four full-build platforms (macOS / Linux / Windows / Android) run the
# suite twice — a default run that pins the trait-OFF contract (the `#else`
# branches: FTS5 / vec0 modules absent), then a `--traits FTS5,SQLiteVec` run for
# the on-state proofs (fullTextSearchFTS5, semanticSearchSQLiteVec, vec0BlobBind).
# The Apple-mobile jobs build the library against each device SDK (a portability
# check); the full test suites run on macOS / Linux / Windows / Android.
jobs:
build-macos:
runs-on: macos-15
timeout-minutes: 15
steps:
- uses: actions/checkout@v6
# Pin `macos-15`: `setup-xcode` only selects among Xcodes already on the
# image, and `macos-latest` isn't guaranteed to carry Xcode 26 (the
# package's tools-version is 6.2). `macos-15` ships Xcode 26 + Apple SDKs.
- name: Select Xcode 26.0
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: "26.0"
- name: Verify Swift version
run: swift --version
- name: Build (macOS)
run: swift build --build-tests -v
- name: Test (macOS)
run: swift test -v --skip-build --no-parallel
- name: Test engine traits FTS5 + SQLiteVec (macOS)
run: swift test -v --traits FTS5,SQLiteVec --filter fullTextSearchFTS5 --filter semanticSearchSQLiteVec --filter vec0BlobBind
build-ios:
runs-on: macos-15
timeout-minutes: 20
steps:
- uses: actions/checkout@v6
- name: Select Xcode 26.0
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: "26.0"
# Build the SDK against the iOS device SDK — a portability check. The
# test suites run on macOS / Linux / Windows / Android via `swift test`.
- name: Build (iOS device SDK)
run: xcodebuild -scheme SQLiteKit -destination 'generic/platform=iOS' build
build-watchos:
runs-on: macos-15
timeout-minutes: 20
steps:
- uses: actions/checkout@v6
- name: Select Xcode 26.0
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: "26.0"
- name: Build (watchOS device SDK)
run: xcodebuild -scheme SQLiteKit -destination 'generic/platform=watchOS' build
build-linux:
# No `apt-get` — the SQLite engine is vendored. Pinned to 6.2
# (SQLiteKit's tools-version).
runs-on: ubuntu-latest
timeout-minutes: 15
container:
image: swift:6.2-jammy
steps:
- uses: actions/checkout@v6
- name: Verify Swift version
run: swift --version
- name: Build (Linux)
run: swift build --build-tests -v
- name: Test (Linux)
run: swift test -v --skip-build --no-parallel
- name: Test engine traits FTS5 + SQLiteVec (Linux)
run: swift test -v --traits FTS5,SQLiteVec --filter fullTextSearchFTS5 --filter semanticSearchSQLiteVec --filter vec0BlobBind
build-windows:
# No vcpkg — SQLite is vendored, so there are no external `.lib` files to
# locate and no `-Xcc` / `-Xlinker` search-path flags.
runs-on: windows-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v6
- name: Setup Swift
uses: SwiftyLab/setup-swift@latest
with:
swift-version: "6.3.1"
- name: Verify Swift version
run: swift --version
- name: Build (Windows)
shell: pwsh
run: swift build --build-tests -v
- name: Test (Windows)
shell: pwsh
run: swift test -v --skip-build --no-parallel
- name: Test engine traits FTS5 + SQLiteVec (Windows)
shell: pwsh
run: swift test -v --traits FTS5,SQLiteVec --filter fullTextSearchFTS5 --filter semanticSearchSQLiteVec --filter vec0BlobBind
build-android:
# Cross-build the SDK and run the suite on an x86_64 emulator with both
# engine traits on. No `container:` — the emulator needs nested KVM, only
# available on the bare ubuntu runner image.
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v6
- name: Build & test SDK (Android emulator)
uses: skiptools/swift-android-action@v2
with:
swift-version: "6.3.2"
free-disk-space: true
swift-build-flags: "--traits FTS5,SQLiteVec"
swift-test-flags: "--traits FTS5,SQLiteVec"