Skip to content

chore(ci): add Node 26 to build-lint-test matrix#1737

Open
lisa-assistant wants to merge 3 commits into
cedarjs:mainfrom
lisa-assistant:lisa/ci-add-node26
Open

chore(ci): add Node 26 to build-lint-test matrix#1737
lisa-assistant wants to merge 3 commits into
cedarjs:mainfrom
lisa-assistant:lisa/ci-add-node26

Conversation

@lisa-assistant
Copy link
Copy Markdown
Contributor

Adds Node 26 to the build-lint-test CI matrix per @Tobbe's request.

Changes

  • set-up-job action — adds a node-version input (default: '24') and passes it to actions/setup-node
  • build-lint-test reusable workflow — adds a node-version workflow_call input and forwards it to set-up-job
  • ci.yml — adds node-version: [24, 26] to the matrix (resolves to the latest patch for each major), updates the job name template

The change is purely additive — default behaviour for all other jobs is unchanged.

@netlify
Copy link
Copy Markdown

netlify Bot commented May 10, 2026

👷 Deploy request for cedarjs pending review.

Visit the deploys page to approve it

Name Link
🔨 Latest commit 9e15060

@github-actions github-actions Bot added this to the chore milestone May 10, 2026
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 10, 2026

Greptile Summary

This PR adds Node 26 to the build-lint-test CI matrix by introducing a node-version input through the set-up-job action and build-lint-test reusable workflow, then expanding the matrix in ci.yml. The change is purely additive and all other jobs remain on Node 24.

  • Matrix expansionbuild-lint-test now runs 4 combinations (ubuntu/windows × Node 24/26) instead of 2; job names are updated accordingly.
  • Cache key gap — both node_modules cache-save steps in set-up-job use a key that omits the Node version, so the Node 24 and Node 26 runs for the same OS will share the same cache slot; this can cause silent cache poisoning for packages with native addons.
  • Docs notedocs/implementation-docs/2026-03-26-cedarjs-project-overview.md lists Node.js | version: 24 in the RUNTIME table; with Node 26 now under test, that entry may need updating.

Confidence Score: 3/5

Safe to merge for pure-JS code paths; native-addon packages may silently reuse a wrong-version cache across the two Node variants until the cache key is fixed.

The node_modules cache keys in set-up-job don't include the Node version, so Node 24 and Node 26 CI runs on the same OS will share the same cache entry. For any package with native binaries (e.g. esbuild, @prisma/client), whichever job writes the cache first could leave the other job running binaries compiled for the wrong ABI, producing confusing build or test failures that are hard to attribute to a Node version mismatch.

.github/actions/set-up-job/action.yml — both cache-save steps need the Node version added to their keys.

Important Files Changed

Filename Overview
.github/actions/set-up-job/action.yml Adds node-version input (default '24') and threads it to actions/setup-node; both node_modules cache keys still omit the Node version, causing cache collisions across the Node 24 and 26 matrix entries.
.github/workflows/build-lint-test.yml Adds node-version workflow_call input (string, default '24') and forwards it to set-up-job — straightforward and correct.
.github/workflows/ci.yml Adds node-version: [24, 26] to the build-lint-test matrix and updates the job name template; other jobs (tutorial-e2e, smoke-tests) continue to run on Node 24 only.

Comments Outside Diff (2)

  1. .github/actions/set-up-job/action.yml, line 73 (link)

    P1 Node version missing from cache key

    The node_modules save-cache key is node-modules-${{ runner.os }}-${{ hashFiles(...) }} — it doesn't include the Node.js version. Now that the matrix runs both Node 24 and Node 26, both variants share the same key for a given OS + lock-file hash. Whichever job saves the cache first will have its node_modules (including any native addon binaries) restored by the other Node version, which can silently corrupt the build or cause test failures for packages with native extensions (e.g. esbuild, @prisma/client, better-sqlite3).

  2. .github/actions/set-up-job/action.yml, line 81 (link)

    P1 The cache key for create-cedar-rsc-app has the same problem — it doesn't capture the Node version and will collide across the two matrix entries. Both cache-save steps should incorporate inputs.node-version to keep the caches isolated per Node version.

Reviews (1): Last reviewed commit: "chore(ci): add Node 26 to build-lint-tes..." | Re-trigger Greptile

@nx-cloud
Copy link
Copy Markdown

nx-cloud Bot commented May 10, 2026

🤖 Nx Cloud AI Fix

Ensure the fix-ci command is configured to always run in your CI pipeline to get automatic fixes in future runs. For more information, please see https://nx.dev/ci/features/self-healing-ci


View your CI Pipeline Execution ↗ for commit 9e15060

Command Status Duration Result
nx run-many -t build:pack --exclude create-ceda... ✅ Succeeded 5s View ↗
nx run-many -t build ✅ Succeeded 5s View ↗
nx run-many -t test --minWorkers=1 --maxWorkers=4 ✅ Succeeded 2s View ↗
nx run-many -t test:types ✅ Succeeded 7s View ↗

☁️ Nx Cloud last updated this comment at 2026-05-10 10:44:09 UTC

Comment thread .github/workflows/ci.yml
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
node-version: [24, 26]
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Project overview doc lists only Node 24 as runtime version

docs/implementation-docs/2026-03-26-cedarjs-project-overview.md shows Node.js | version: 24 in the RUNTIME table. Now that CI officially tests Node 26 as well, that table entry may become stale and mislead contributors about supported runtime versions. Consider updating it to reflect both 24 and 26 (or whichever versions the project intends to support).

Context Used: Make sure everything in docs/implementation-docs/2... (source)

@Tobbe
Copy link
Copy Markdown
Member

Tobbe commented May 10, 2026

We can't upgrade to Node 26 yet because we use Yargs 17. See yargs/yargs#2509 and yargs/yargs#2514

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants