Skip to content

GOOWOO-740: Update CI workflows for Node.js 24 compatibility#3519

Open
mserino wants to merge 7 commits into
developfrom
add/GOOWOO-740-update-gh-actions-node24
Open

GOOWOO-740: Update CI workflows for Node.js 24 compatibility#3519
mserino wants to merge 7 commits into
developfrom
add/GOOWOO-740-update-gh-actions-node24

Conversation

@mserino

@mserino mserino commented Jun 18, 2026

Copy link
Copy Markdown
Collaborator

Changes proposed in this Pull Request:

Closes GOOWOO-740.

Description:
GitHub runners began defaulting to Node 24 on June 16, 2026, deprecating Node 20 actions. This PR updates all workflows in this repo to be Node 24-compatible.

Changes:

  • codecov/codecov-action: bumped SHA pin from v4.6.0 to v5.5.4. v4 is a JS action declaring runs: using: node20; v5 switched to a composite/shell implementation, eliminating the node runtime dependency entirely.
  • woocommerce/grow actions: bumped all usages from @actions-v2 to @actions-v3 across 11 workflow files. The actions-v3 tag was released June 12, 2026 specifically for node24 compatibility — notably get-plugin-releases now declares runs: using: node24, and prepare-node now calls actions/setup-node@v6 (previously @v4).

Known limitations not addressed in this PR:

  • update-browserslist-db.yml still uses c2corg/browserslist-update-action@v2.5.0, which declares runs: using: node20. v2.5.0 is the latest release and the main branch has no node24 update.
  • run-qit.yml still uses woocommerce/grow/run-qit-extension@actions-v2 — this action was intentionally removed from actions-v3 as broken and unused (grow#239). The file has been removed
  • deploy.yml has node_version: '20' — this controls the Node.js version used to build the plugin, not the runner runtime. It's tied to .nvmrc and is a separate concern.

Screenshots:

Detailed test instructions:

  1. No node20 deprecation warnings in any workflow run after merging. Previously these appeared as yellow annotations on every run; they should be gone for all updated workflows.
  2. js-unit-tests — verify the codecov upload step completes without errors.
  3. php-unit-tests — same for the codecov upload step.
  4. branch-labels, js-css-linting, php-coding-standards, php-hook-documentation, post-release-merge — these run on PR/push events; open a test PR to trigger them and confirm they pass.
  5. update-browserslist-db.yml will still show a node20 warning — that's expected and documented.

Additional details:

Changelog entry

Dev - Update GitHub Actions workflows to Node.js 24: bump woocommerce/grow from @actions-v2 to @actions-v3, actions/checkout from @v4 to @v6, codecov/codecov-action from v4 to v5, and remove unused run-qit.yml workflow.

Maggie Serino added 3 commits June 17, 2026 16:22
v4 uses node20 (deprecated on GitHub runners after 2025-06-16).
v5 is a composite action with no node20 JS runtime dependency,
resolving the deprecation for both js-unit-tests and php-unit-tests.

Ref: GOOWOO-740
actions-v3 (released 2026-06-12) upgrades all GitHub Actions to Node.js v24,
resolving the node20 deprecation across all CI workflows.

Actions updated (11 files):
- branch-label, eslint-annotation, get-plugin-releases, hook-documentation,
  merge-trunk-develop-pr, prepare-extension-release, prepare-mysql,
  prepare-node, prepare-php, publish-extension-dev-build, stylelint-annotation

Note: run-qit-extension was removed in actions-v3 (confirmed broken upstream).
run-qit.yml is left on @actions-v2 with a TODO; migration to QIT CLI
is a separate follow-on task.

Ref: GOOWOO-740
@mserino
mserino requested a review from asvinb June 18, 2026 12:40
@mserino mserino self-assigned this Jun 18, 2026
@github-actions github-actions Bot added type: enhancement The issue is a request for an enhancement. changelog: add A new feature, function, or functionality was added. labels Jun 18, 2026
@codecov

codecov Bot commented Jun 18, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 66.8%. Comparing base (99adf60) to head (ed961fc).
⚠️ Report is 14 commits behind head on develop.

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##             develop   #3519     +/-   ##
===========================================
- Coverage       67.7%   66.8%   -0.9%     
  Complexity      5322    5322             
===========================================
  Files            518     913    +395     
  Lines          21453   28226   +6773     
  Branches           0    1720   +1720     
===========================================
+ Hits           14513   18855   +4342     
- Misses          6940    9110   +2170     
- Partials           0     261    +261     
Flag Coverage Δ
js-unit-tests 64.1% <ø> (?)
php-unit-tests 67.7% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.
see 395 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@mikaeltomovic mikaeltomovic left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Hey @mserino, great work on this! It's mostly very good and I think you have covered all workflows consistently. However I found a few things you might want to double check.

  1. The PR description says deploy.yml has node_version: '20' but that doesn't match what's in ‎.github/workflows/deploy.yml on line 47. I think your reasoning in the description is correct and that this should be left at 20 since .nvmrc still runs 20.
  2. If you look at ‎.github/workflows/js-unit-tests.yml (line 43) and .github/workflows/php-unit-tests.yml (line 115) you'll see uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4.6.0 which I believe pins codecov to version 4.6.0 (to this commit more specifically). I think you'll have to update this line to another PIN. The PR description says you "bumped SHA pin from v4.6.0 to v5.5.4. v4 is a JS action declaring runs: using: node20; v5 switched to a composite/shell implementation, eliminating the node runtime dependency entirely." but this bump doesn't seem to be included.

@asvinb asvinb changed the title GOOWOO-740 update gh actions to node24 GOOWOO-740: Update CI workflows for Node.js 24 compatibility Jun 26, 2026
  upload-artifact v4 and github-script v7 use Node 20 runners;
  v5/v8 required for Node 24 compatibility in GitHub Actions.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog: add A new feature, function, or functionality was added. type: enhancement The issue is a request for an enhancement.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants