chore: tighten CI and document pnpm-only install#80
Merged
Conversation
- ci: run cms integration tests (vitest) alongside the build, so the existing test:int suite actually guards main - ci: fix boolean precedence in the pull-request-opened notification job so the `reopened` clause is scoped to pull_request events - gitignore: block npm/yarn lockfiles repo-wide; only pnpm-lock.yaml at the root is committed - readme: recommend a single `pnpm install` at the workspace root instead of installing per-package, and note that npm/yarn are unsupported
The integration test calls getPayload() which opens a Postgres connection. The repo's DATABASE_URL points to an IPv6-only host, which GitHub-hosted runners can't reach (ENETUNREACH). The CMS build step never noticed because next build doesn't actually open a DB connection at build time.
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.
Summary
notification.ymlhadA && B || CwhereA && (B || C)was intended. In practice the top-levelon: pull_requesttrigger saved us, so this isn't user-visible — but the logic was wrong.pnpm-workspace.yaml+ rootpnpm-lock.yaml). A recent feature branch accidentally committed aweb/package-lock.jsonfrom a straynpm install. The gitignore now ignorespackage-lock.jsonandyarn.lockanywhere in the tree, so it can't happen by accident again.pnpm installat the root instead ofcd web && pnpm install && cd ../cms && pnpm install. In a pnpm workspace, one root install handles both packages — shorter, harder to typo intonpm install, and matches how pnpm workspaces are designed to be used. Added a one-line note that npm/yarn aren't supported.What got dropped from this PR
Initially also added a
pnpm --filter cms test:intstep to the CMS job. CI surfaced that the integration test can't actually run on GitHub-hosted runners:getPayload()opens a Postgres connection andDATABASE_URLresolves to an IPv6-only host, which GH runners can't reach (ENETUNREACH). The CMS build step never noticed becausenext builddoesn't actually open a DB connection at build time. Reverting that step here — proper fix is wiring up a Postgres service container in CI, which belongs in its own PR.Test plan
git ls-files '**/package-lock.json'returns nothing (sanity check that no stray lockfiles slipped in).pnpm installat the repo root on a fresh clone and confirm bothweb/andcms/install cleanly.Notes
web/package-lock.jsonon feature branches that already committed it — those branches still need agit rm web/package-lock.jsonfrom their authors (flagged on feature/sponsor-page01 #75).only-allow pnpmpreinstall guard. Discussed offline — for our team size, the.gitignorerule is enough and the tech lead can catch the rarenpm installmistake during review or direct support.🤖 Generated with Claude Code