-
Notifications
You must be signed in to change notification settings - Fork 0
76 lines (67 loc) · 2.57 KB
/
Copy pathci.yml
File metadata and controls
76 lines (67 loc) · 2.57 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
# PR gate + push CI for go-inference — the model-free test surface on all three
# desktop OSes. The suite is testable without a model loaded (engine/metal skips
# cleanly without MLX_METALLIB_PATH; engine/hip's contract tests are host-side),
# so this lane is the go/no-go for PRs into dev: linux + macos are REQUIRED
# checks; windows is EXPERIMENTAL (continue-on-error) until the cgo-on windows
# graph is proven — its logs name the real portability offenders either way.
# The full artifact build (and the metal lane) lives in build.yml.
name: CI
on:
push:
branches: [dev, main]
pull_request:
branches: [dev, main]
permissions:
contents: read
env:
GO_VERSION: "1.26"
jobs:
test:
name: tests · ${{ matrix.os_name }}
runs-on: ${{ matrix.runner }}
continue-on-error: ${{ matrix.experimental }}
strategy:
fail-fast: false
matrix:
include:
- { runner: ubuntu-latest, os_name: linux, experimental: false }
- { runner: macos-latest, os_name: macos, experimental: false }
- { runner: windows-latest, os_name: windows, experimental: true }
env:
CGO_ENABLED: "1" # go/ links duckdb (prebuilt libs for all three OSes)
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: ${{ env.GO_VERSION }}
cache-dependency-path: |
go/go.sum
cli/go.sum
# The module suite resolves from go.mod tags (GOWORK=off) — proves the
# published dependency surface, not the workspace.
- name: Module suite (default tags — engine/metal skips without a metallib)
working-directory: go
env:
GOWORK: "off"
shell: bash
run: go test -count=1 -covermode=atomic -coverprofile=coverage.out ./...
# cli + examples need the workspace (cli requires the LOCAL go/ tree; the
# examples module is the acceptance surface — every public feature ships
# with its example, so compiling them all catches API breakage model-free).
- name: TUI suite (workspace)
working-directory: cli
shell: bash
run: go test -count=1 ./tui/...
- name: Examples compile + vet (workspace — the acceptance surface)
working-directory: examples
shell: bash
run: |
go build ./...
go vet ./...
- name: Upload coverage to Codecov
if: matrix.os_name == 'linux'
uses: codecov/codecov-action@v5
with:
files: go/coverage.out
flags: portable
fail_ci_if_error: false