Skip to content

Repair wp/5.6 branch Actions: Upgrade Node.js from 12 to 14 - #84960

Open
desrosj wants to merge 1 commit into
fix-actions-5.6/read-node-version-from-nvmrcfrom
fix-actions-5.6/upgrade-node-to-14
Open

desrosj wants to merge 1 commit into
fix-actions-5.6/read-node-version-from-nvmrcfrom
fix-actions-5.6/upgrade-node-to-14

Conversation

@desrosj

@desrosj desrosj commented Oct 16, 2026 •

Copy link
Copy Markdown
Member

Part of #82937.

What?

Upgrades wp/5.6's pinned Node.js from 12 to 14, with the two dependency bumps npm ci needs on Node 14.

File Change
.nvmrc 12 -> 14
packages/env/package.json nodegit ^0.26.2 -> ^0.27.0
package.json node-sass 4.13.1 -> 4.14.1
package-lock.json Matching entries (see How?)

The workflows read the version from .nvmrc (#84959), so no workflow changes.

Why?

wp/5.6 has pinned Node 12 since it was cut in 2020. wp/5.7 and wp/5.8 later got commits pinning 14, and wp/5.9 onward inherited trunk's bump; wp/5.5 and wp/5.6 were missed. WordPress core's package.json already required Node 14.15.0 when wp/5.6 was cut.

Node 12 also can't parse the optional chaining (?.) in yaml@2.x, which every docker-compose (npm) release after 0.24.0 uses, so #84961's Docker Compose v2 migration needs Node 14.

How?

At their old versions, neither native addon has a Node 14 (ABI 83) prebuilt binary, and the node-gyp fallback fails on a fresh runner (old gyp vs. current Python). Verified with Node 14.21.3:

  • nodegit ^0.27.0 (packages/env, used only by lib/download-source.js to download WordPress; @wordpress/env is a development tool WordPress 5.6 doesn't bundle): installs a prebuilt binary.
  • node-sass 4.14.1 (used by bin/packages/build-worker.js and packages/react-native-editor/sass-transformer.js): installs a prebuilt binary and compiles block-library/src/style.scss + base-styles to CSS byte-identical to 4.13.1.

The lockfile matches what npm install writes (Node 14.21.3, npm 6.14.18, as in CI), so npm ci, npm install and check-local-changes agree:

  • node-sass@4.14.1 requires sass-graph@2.2.5, which requires yargs@^13.3.2: a nested sass-graph@2.2.5/yargs@13.3.2 subtree is added, reusing the nested yargs@14.0.0 subtree's versions where ranges match (cliui, find-up, get-caller-file, require-main-filename, string-width, y18n), plus yargs-parser@13.1.2 (the flat 13.1.1 doesn't satisfy ^13.1.2) and a nested ansi-styles@3.2.1 for wrap-ansi@5.1.0.
  • The packages/env entry's requires says nodegit@^0.27.0; at ^0.26.2 it excludes the locked 0.27.0 and npm install drops the nodegit subtree.
  • nodegit@0.27.0 replaces promisify-node/request-promise-native with got@^10.7.0 (already locked at 10.7.0). The unused promisify-node, nodegit-promise, request-promise-native@1.0.5, request-promise-core@1.1.1, flat sass-graph@2.2.4 and its nested yargs@7 are removed.

Other dependencies weren't audited for Node 14; these two are the ones known to break.

Use of AI Tools

This PR was created by Claude Code under my supervision. All code should be treated as AI-produced and not yet reviewed by a human until this PR is marked Ready for Review.

@desrosj desrosj added [Type] Build Tooling Issues or PRs related to build tooling [Tool] Env /packages/env labels Oct 16, 2026
@desrosj desrosj self-assigned this Oct 16, 2026
@coderabbitai

coderabbitai Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 99eda096-18b3-4dff-8504-47ede3d04780

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Co-authored-by: desrosj <desrosj@git.wordpress.org>

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

@ramonjd ramonjd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

The failing checks fail the same way on the base PR, and pass at the top of this stack (#84978).

@desrosj
desrosj removed this pull request from stack #84979 October 21, 2026 18:30
@desrosj
desrosj added this pull request to stack #85319 October 21, 2026 18:30

This branch has not been deployed

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

Labels

[Tool] Env /packages/env [Type] Build Tooling Issues or PRs related to build tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants