Repository navigation
Conversation
The "Go lint (router recovery, full tree)" job was the CI critical path at ~19.6 min. Three changes cut it down. It never restored golangci-lint's analysis cache, so `make lint-router-recovery` re-analyzed the whole tree from scratch every run (~14 min). The go-lint job runs the identical command over a restored cache in under a minute, so this job now restores that cache too, including the entries go-lint writes. It also carried three Postgres tests with no database service and no SILO_TEST_DATABASE_URL, so every one skipped while still paying its compile time on the critical path. They move to a new parallel go-integration job with a pgvector service and a migration step, so they actually run. The job now uses the repo's composite setup-go action, which restores a per-commit build cache, instead of a bare setup-go that restored only its own stale go.sum-keyed cache.
Review — APPROVE (gate: full green)Single-file CI change (+76/-28, What's correct
Lows (non-blocking)
No security surface (ephemeral postgres password + random |
|
Addressed the stale header comment in dbd7cfa; it now names the integration lane alongside the changed-lines and full-tree lints. The other three lows need no change: cache-write volume and first-run |
|
Superseded by #242. That branch is stacked on this one, so it carries these commits plus the libvips deb cache and the cache-quota fix, and one PR avoids re-running the flaky changed-lines job here. Closing. |
Problem
Related issue: N/A
Validation tasks: none
The
Go lint (router recovery, full tree)job is the long pole of the CI run at about 19.6 minutes, while every other job finishes in 3–9 minutes. Two things keep it there.It never restores golangci-lint's analysis cache, so
make lint-router-recoverytype-checks and analyzes the whole tree from scratch on every run — about 14 minutes. Thego-lintjob runs the identical command over a restored cache in 23–59 seconds.It also runs three Postgres tests with no database service and no
SILO_TEST_DATABASE_URL, so all three skip while still paying their compile time on the critical path.This change restores the cache, warms the build cache, and gives those tests a real database.
Approach
lint-router-recoverynow restores~/.cache/golangci-lintunder a job-specific key with restore-keys that also pick up the cachego-lintwrites, and uses the repo's compositesetup-goaction so it gets the same per-commit build cache as the other Go jobs. The explicit libvips and embed-stub steps are gone because the composite action does both.The three tests move to a new
go-integrationjob: apgvector/pgvector:pg18service,SILO_TEST_DATABASE_URL, ago run ./cmd/silo/ --migrate-onlystep, then the tests. It runs in parallel with the rest of the gate.Validation
actionlint .github/workflows/ci.yml: clean.pgvector/pgvector:pg18: migrations applied 522/522, and all three tests passed (internal/adminjob,internal/recommendations,cmd/silo).Risks
CI scheduling only. The first run after this lands starts cold for the new build cache; later runs reuse it. No migration, compatibility, security, or operational impact.
Checklist
AI Disclosure
ghCLI and Docker