Skip to content

⭐ CI and Docker

Terrence Daniels edited this page Aug 23, 2026 · 5 revisions

17 workflows under .github/workflows/ plus the shared .github/actions/prepare composite action, all migrated off pnpm: pnpm execyarn exec, pnpm runyarn run, pnpm --recursive publishyarn workspaces foreach --all --no-private npm publish, pnpm-lock.yaml path-trigger filters → yarn.lock. Repo-identity guards in the maintenance workflows (stale-issue/PR closers) updated from directus/directus to Terrence721/directus-main — otherwise those scheduled jobs would silently never fire on this fork.

Check is green (lint, format, build, unit test) — exercised against real pushes, not just written and assumed to work. Getting there took two real fixes: the Build step was originally yarn workspaces foreach -A -t run build, attempting all 40 workspaces when only directus has real source — scoped to --include directus in both the root package.json script and (separately, since it's a hardcoded call, not a call to the root script) .github/actions/prepare/action.yml's own Build step. See Yarn Migration for the isolated-vm fix that got Prepare itself passing first.

blackbox.yml/e2e.yml gated, not fixed. e2e.yml's Run tests is if: false until tests/e2e has real test files. blackbox.yml needed more: its docker-compose steps (Start services/Start database/MSSQL Set Compatibility Level) reference tests/blackbox/docker-compose.yml, which doesn't exist either — that file failing outright (no such file or directory) is what caught it, not a rerun of the same error. All of those are if: false now too. Only Checkout/Prepare stay active in both workflows — same practice as eShop-full's MAUI/Playwright gating, with the re-enable condition written in each workflow's comment — see Known Gaps.

Several workflows still reference secrets (CLAUDE_CODE_OAUTH_TOKEN, RELEASE_PAT, DOCKERHUB_USERNAME/PASSWORD, SLACK_WEBHOOK_CMS_FREEZE) not configured on Terrence721/directus-main yet — e.g. Sync Readme to Docker Hub fails until those are set.

Docker

Both Dockerfile and Dockerfile.dhi (the hardened/distroless variant) updated: NODE_VERSION 22→26, npm install -g corepack added (recent Node builds don't bundle it), and pnpm fetch's Docker-cache pre-warming dropped (no Yarn equivalent — see Yarn Migration).

🏁 pnpm deploy --legacy --prod — used by both Dockerfiles to build a standalone production bundle — has no Yarn equivalent either. Replaced with scripts/deploy-production.mjs, built on yarn workspaces focus directus --production. Non-destructive: an initial version pruned the repo's own root node_modules in place — a real regression from pnpm's original behavior — corrected to run the focus/copy steps inside a disposable git worktree instead, so the live working tree's node_modules is never touched. Verified end-to-end: dist/ came out with a working node_modules and a correct package.json.

Neither Dockerfile has been build-tested end-to-end yet — see Known Gaps.

Clone this wiki locally