fix(ci): run Node CI on Node 22 with pnpm and repair the build - #394
polylane[bot] wants to merge 1 commit into
Conversation
Co-authored-by: polylane[bot] <277585245+polylane[bot]@users.noreply.github.com>
Review or Edit in CodeSandboxOpen the branch in Web Editor • VS Code • Insiders |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning Polylane could not verify the production impact of this pull request. This repository deploys to no production resources Polylane knows about and the workspace has no connected cloud accounts or observability integrations, so there is nothing to check this change against. Dependency changes
Polylane has no cloud accounts connected for this workspace, so it cannot see what this repository deploys to. Connect a cloud and every pull request will be checked against your production resources. Polylane analysed Did this help? React 👍 or 👎 so the next review is sharper. |
PR Summary
|
Code Terrier Review: primary reviewer failedThe primary model The primary is the verifier and publish identity for a review — without it, any findings the
Failure detailPush a new commit (or re-run the review) once the underlying cause is resolved. |
Fixes: dingyi/ding.one "Node CI" fails on every push: EOL Node 8/10/12 matrix + stale workflow
The Node CI workflow for ding.one fails on every push: it runs an end-of-life Node 8/10/12 matrix with stale actions, so npm install cannot complete and the build never runs. The workflow now installs with pnpm on Node 22 and runs the build, and the committed code is repaired so the build passes on modern Node (12 of 12 pages) instead of failing every time.
What caused this
Affected:
int_0a8732aaa001flf6s11fmt73Why this fix
The "Node CI" workflow has failed on every push for weeks: runs #35021912838, #34618132504, #34487725910, #34407344602, #34407320327, #33680210083, #33442188473, #32967052658 and #32967025943 (2026-08-26 through 2026-09-15) all conclude in failure. The failing step is the install: "npm ERR! unrs-resolver@1.12.2 postinstall:
node postinstall.js", "##[error]Process completed with exit code 1." The matrix node-version [8.x, 10.x, 12.x] is end-of-life and the current dependency tree no longer installs on it; the pinned actions/checkout@v3 and setup-node@v3 also target Node 20, which GitHub now forces onto Node 24.The root cause is a workflow written for a Node 8-era project that has since drifted to Next 15, React 19 and pnpm. On the project's real toolchain the committed tree also fails to build, in ways the CI never got far enough to reach: tinykeys 3.0.0 has no default export, @next/font is removed in Next 15, @calcom/embed-react 1.5.1 reads React 18 internals and crashes page-data collection under React 19, and the getStaticProps pages call Notion and Raindrop at build time with no credentials in CI. This change modernizes the workflow (pnpm 9 on Node 22, current action majors) and repairs each of those code paths; with the workflow's on:[push] trigger, future runs conclude success.
The change is safe because the workflow commands match the project's actual package manager (pnpm-lock.yaml at the root, pnpm 9.15.0); the calcom bump is the maintainers' React-19-compatible release whose peer range expands to ^18.2.0 || ^19.0.0; the font change keeps the same latin subset the removed experimental.fontLoaders declared; and the credential guards return empty pages only when the environment lacks secrets (CI, local), leaving Vercel production renders unchanged because those variables are set there. Deleting the workflow was rejected: the repo is still maintained by Renovate.
Out of scope
@next/fontdependency: not required for the build to pass on the supported path.@types/node: pre-existing, build is gated byignoreBuildErrors: true, unrelated to the CI failure.13 files changed (+61/-43)
.github/workflows/nodejs.yml: modified, +14/-13components/CommandMenu/index.tsx: modified, +1/-1components/PageTitle/index.tsx: modified, +2/-2lib/bookmarks.ts: modified, +4/-0lib/reading.ts: modified, +4/-0next.config.js: modified, +0/-3package.json: modified, +1/-1pages/_app.tsx: modified, +2/-2pages/gear.tsx: modified, +3/-0pages/newsletters.tsx: modified, +3/-0pages/podcasts.tsx: modified, +3/-0pages/stack.tsx: modified, +3/-0pnpm-lock.yaml: modified, +21/-21Generated by Polylane. You can ask follow-ups by mentioning @polylane in a comment.