ci: GitHub Actions pipeline (build + static/dynamic tests, cached) + Node 24#1
Merged
Conversation
Bump both images to a digest-locked node:24.16.0-alpine3.23 base (adding a prod-deps prune stage so the runtime image ships no build tooling), bump @types/node to 24, and add a `make scan` Trivy gate for the built images. Add .nvmrc (24.16.0) as the single source of truth for the CI host job and local dev (`nvm use`), cross-referenced to the Dockerfiles' digest-pinned NODE_IMAGE so the two stay in lockstep. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Two jobs that mirror the Makefile rather than re-implement it: - static: npm ci -> build (shared -> backend -> frontend) -> lint -> typecheck -> backend unit tests, plus an advisory `npm audit`. Reads the Node version from .nvmrc; caches the npm download cache and the Next.js build cache. - e2e: builds & boots the dockerized stack and runs the in-container Playwright integration + e2e suite (== `make test`), gated behind `static`. Docker layers are cached via Compose Bake + a CI-only docker-compose.ci.yml (x-bake type=gha). Dumps stack logs on failure and uploads the Playwright HTML report artifact. Document the pipeline in docs/ci.md and ADR-0008; link both from the README. Verified locally on the Node 24 images: build, lint, typecheck, 11 unit tests, and the full `make test` suite (17 integration + 1 e2e) all green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds a GitHub Actions CI pipeline that runs build + static + dynamic tests on every push/PR, with caching, and consolidates the Node version to a single source of truth (Node 24).
Modeled on the sibling
mitekk/pool-starsci/add-github-actionsconventions, adapted to this repo's container-targeted test suite.Two jobs (mirror the
Makefile, not re-implementations)staticnpm ciβ build (shared β backend β frontend) βlintβtypecheckβ backend unit tests β advisorynpm auditmake lint+make typecheck+make test-bee2emake teste2eis gated behindstatic(needs: static) so we don't pay Docker build/boot time when cheap checks fail.Caching (reused resources)
~/.npm) viasetup-node.frontend/.next/cache) viaactions/cache.x-bake type=ghafrom a CI-onlydocker-compose.ci.yml(no runtime changes; never used locally). Playwright browsers are covered by the tests image's base layer.Node 24 consolidation
.nvmrc(24.16.0) is the single source of truth: thestaticjob reads it vianode-version-file;nvm usepicks it up locally.NODE_IMAGE(node:24.16.0-alpine3.23@sha256:β¦) for reproducibility + themake scanCVE gate, cross-referenced to.nvmrcby comment.prod-depsprune stage,@types/node24,make scan, lockfile) β required for host/image consistency.Docs
docs/ci.mdβ full pipeline reference (jobs, triggers, Node sourcing, caching, reproduce-locally table).docs/adr/0008-github-actions-ci.mdβ the decision record; indexed indocs/adr/README.mdand linked from the README.Verified locally (Node 24 images)
npm ci, build (shared/backend/frontend),lint,typechecknpm audit --audit-level=high(advisory; only moderate advisories)make testβ 17 integration + 1 e2e all green, clean teardowndocker compose -f β¦ -f docker-compose.ci.yml configvalidπ€ Generated with Claude Code