chore(ci): persistent pnpm store + Playwright caches (and Dockerfile BuildKit cache) #27

Merged
luckberg merged 4 commits from gsd/quick-260618-tg2-ci-dep-cache into main 2026-06-18 21:32:08 -04:00
Showing only changes of commit f83d423e1c - Show all commits
+15
View File
@@ -205,6 +205,21 @@ Every PR to `main` runs through `.gitea/workflows/ci.yml`. A `changes` path-filt
All five jobs must pass (or be legitimately skipped) before a PR can merge. See [docs/TESTING.md](TESTING.md) for test suite details.
### CI dependency caches
CI uses two persistent cache paths inside job containers:
| Path | Content |
| ---------------- | ----------------------------------------------------------------------- |
| `/pnpm-store` | pnpm content-addressable store (`--store-dir /pnpm-store`) |
| `/ms-playwright` | Playwright browser binaries (`PLAYWRIGHT_BROWSERS_PATH=/ms-playwright`) |
These paths must be bind-mounted from host directories in the act_runner `config.yaml`
`container.options` field — that is a **host-side change, not tracked in this repo**. Without the
mounts, CI still works correctly — pnpm creates an ephemeral store at `/pnpm-store` inside the
container and Playwright downloads browsers fresh each run. The mounts only eliminate repeat
downloads across runs.
## Drizzle Migration Workflow
Schema changes follow a strict two-step process. **`drizzle-kit push` is not available** — it has been removed from the scripts because it emits a false destructive diff (table truncation) on populated MariaDB databases.