Skip to content

chore(ci): bump GitHub Actions to Node 24-native versions#38

Merged
MP2EZ merged 1 commit into
previewfrom
chore/ci-node-24-actions-bump
May 26, 2026
Merged

chore(ci): bump GitHub Actions to Node 24-native versions#38
MP2EZ merged 1 commit into
previewfrom
chore/ci-node-24-actions-bump

Conversation

@MP2EZ
Copy link
Copy Markdown
Owner

@MP2EZ MP2EZ commented May 26, 2026

Summary

Pure runtime-version migration. GitHub Actions runners default to Node 24 on June 2nd, 2026. The previously pinned versions (`checkout@v4`, `setup-node@v4`, `wrangler-action@v3`) ran on Node 20 and produced deprecation warnings on every workflow run.

Bumps

Action From To Released
`actions/checkout` `@v4` `@v6` (v6.0.2) 2026-01-09
`actions/setup-node` `@v4` `@v6` (v6.4.0) 2026-04-20
`cloudflare/wrangler-action` `@v3` `@v4` (v4.0.0) 2026-05-12

All 10 action references across `.github/workflows/ci.yml` and `.github/workflows/deploy.yml` updated via sed.

Verification

CI on this PR runs under the new action versions, so a green build IS the verification:

  • `Lint + Tests` job — passes under `actions/checkout@v6` + `setup-node@v6`
  • `Wrangler runtime smoke` job — same + `wrangler-action@v4` if reached during deploy
  • No "Node.js 20 actions are deprecated" warnings in the logs

If CI is green, the Node 24 migration is done.

🤖 Generated with Claude Code

GitHub Actions runners default to Node 24 starting June 2nd, 2026.
The previously-pinned versions (checkout@v4, setup-node@v4,
wrangler-action@v3) all ran on Node 20 and produced deprecation
warnings on every workflow run.

Latest stable versions, all native to Node 24:
- actions/checkout v4 → v6 (v6.0.2, published 2026-01-09)
- actions/setup-node v4 → v6 (v6.4.0, published 2026-04-20)
- cloudflare/wrangler-action v3 → v4 (v4.0.0, published 2026-05-12)

Behavior expected unchanged; this is purely a runtime-version
migration. CI on this PR verifies the bumped versions work cleanly
before merging.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@MP2EZ MP2EZ merged commit d474f3a into preview May 26, 2026
2 checks passed
@MP2EZ MP2EZ deleted the chore/ci-node-24-actions-bump branch May 26, 2026 00:47
MP2EZ added a commit that referenced this pull request May 31, 2026
The @opennextjs/cloudflare 1.19.11 upgrade in this PR pulls a newer
transitive wrangler that requires Node.js >= 22. CI's setup-node was
pinned to node-version 20, so `wrangler dev` aborted on startup with
"Wrangler requires at least Node.js v22.0.0" — the wrangler-smoke job's
worker never came up and the readiness probe timed out.

Bumps node-version 20 → 22 in both ci.yml (Lint+Tests, wrangler-smoke)
and deploy.yml. This is distinct from the earlier Actions-runtime bump
(PR #38: checkout/setup-node action versions) — that was the action's
own Node runtime; this is the Node the action provisions for the
project toolchain.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
MP2EZ added a commit that referenced this pull request May 31, 2026
* fix(security): patch SSRF + high-severity CVEs in next + OpenNext

Audit (/m:audit --security) flagged 51 npm vulns, 2 hitting the
production runtime:

- @opennextjs/cloudflare 1.14.4 → 1.19.11: SSRF via /cdn-cgi/
  path-normalization bypass (GHSA-c7mq-gh6q-6q7c). This is the live
  Cloudflare Workers server adapter — the built worker ships its
  runtime shim, so even though it's a devDependency the vuln reaches
  production. Highest-priority fix.
- next 16.0.10 → 16.2.6: high-severity set (Server-Actions CSRF via
  null origin, middleware/proxy bypass, RSC cache poisoning,
  image-optimizer DoS). Several target the middleware GPC/AB surface.

Also bumped eslint-config-next to match (16.2.6) and ran npm audit fix
for transitive criticals (fast-xml-parser, serialize-javascript,
minimatch, etc.).

Result: 51 → 4 vulns. The remaining 4 are all moderate build-chain
transitives (postcss XSS via next, @opennextjs/aws) whose only
"fix" npm offers is a catastrophic downgrade — next→9.3.3 (destroys
the app) or @opennextjs→1.14.1 (reintroduces the SSRF just fixed).
They are build-time only (PostCSS never serves user content) with no
real runtime exposure and no forward fix available, so they are left
intentionally. Do NOT run `npm audit fix --force`.

Verified: lint + typecheck clean, 80 tests pass, `next build` +
`opennextjs-cloudflare build` both succeed (worker.js produced).

Note: 16.3.x is canary-only; 16.2.6 is the latest stable 16.x.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* ci: bump runner Node 20 → 22 (required by upgraded wrangler)

The @opennextjs/cloudflare 1.19.11 upgrade in this PR pulls a newer
transitive wrangler that requires Node.js >= 22. CI's setup-node was
pinned to node-version 20, so `wrangler dev` aborted on startup with
"Wrangler requires at least Node.js v22.0.0" — the wrangler-smoke job's
worker never came up and the readiness probe timed out.

Bumps node-version 20 → 22 in both ci.yml (Lint+Tests, wrangler-smoke)
and deploy.yml. This is distinct from the earlier Actions-runtime bump
(PR #38: checkout/setup-node action versions) — that was the action's
own Node runtime; this is the Node the action provisions for the
project toolchain.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.

1 participant