ci: derive workflow Node version from devEngines via node-version-file#184
Merged
Conversation
Workflows hardcoded `node-version: 22`, a second source of truth that could drift from package.json's devEngines.runtime.version (22.22.3) and that Renovate kept trying to bump to 24. Two jobs already read the pin via a jq `node-pin` step. setup-node v6.4.0 (the pinned SHA) resolves node-version-file against package.json in the order volta.node -> devEngines.runtime -> engines.node, so `node-version-file: package.json` reads the exact devEngines pin. That provisions exactly 22.22.3, preserving the cargo build.rs exact-match requirement for the standalone build/smoketest jobs. Point all 7 setup-node steps at node-version-file and drop the now- redundant jq node-pin steps. devEngines.runtime.version is now the single source of truth for the Node version everywhere (CI, release, chromatic, security-audit). Tradeoff: the jq step's explicit MAJOR.MINOR.PATCH check is gone; build.rs remains the backstop if the pin is ever set to a range. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Deploying mouseterm with
|
| Latest commit: |
eacfdaf
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://0a2eddd1.mouseterm.pages.dev |
| Branch Preview URL: | https://chore-node-version-from-deve.mouseterm.pages.dev |
dormouse-bot
approved these changes
Jun 29, 2026
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.
Why
Workflows hardcoded
node-version: 22— a second source of truth that could drift frompackage.json'sdevEngines.runtime.version(22.22.3), and the exact thing Renovate kept trying to bump to24(see #183, which stops that churn). This makesdevEngines.runtime.versionthe single source of truth for the Node version across every workflow.How
actions/setup-node@v6.4.0(the pinned SHA48b55a0) resolvesnode-version-fileagainstpackage.jsonin the ordervolta.node → devEngines.runtime → engines.node(docs at that ref). Sonode-version-file: package.jsonreads the exactdevEnginespin and provisions exactly22.22.3— preserving thecargobuild.rsexact-match requirement for the standalone build/smoketest jobs.setup-nodesteps now usenode-version-file: package.json(ci ×2, release ×3, chromatic, security-audit).node-pinsteps (ci smoketest, release build-standalone) are removed as redundant; theirbuild.rsrationale is preserved in the surrounding comments.Tradeoff
The jq step's explicit
MAJOR.MINOR.PATCHvalidation is gone. IfdevEngines.runtime.versionis ever set to a range instead of an exact version,build.rs(not a pre-check) is the backstop that catches it — a less friendly error, but the project convention is an exact pin.🤖 Generated with Claude Code