Skip to content

feat: declare action runtime as node24#4

Merged
kurok merged 1 commit into
feat/al2023-supportfrom
feat/action-runs-on-node24
Apr 20, 2026
Merged

feat: declare action runtime as node24#4
kurok merged 1 commit into
feat/al2023-supportfrom
feat/action-runs-on-node24

Conversation

@kurok
Copy link
Copy Markdown

@kurok kurok commented Apr 20, 2026

Summary

One-line change in action.yml: using: node12using: node24.

Why

The action still declared the oldest Node runtime GitHub ever supported. GitHub has been auto-shimming node12 forward for years (through ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION), and the current runner (v2.333.1, merged in #3) now surfaces this warning on every consumer's Actions page:

Node.js 20 actions are deprecated. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Node.js 20 will be removed from the runner on September 16th, 2026.

Declaring node24 explicitly aligns the action with what the runner already bundles (externals/node24), silences the deprecation warning for every downstream consumer (screenshotted on namecheap/terraform-provider-namecheap here), and is the direction GitHub is forcing us anyway.

Compatibility check on dist/index.js

Grep'd for Node-22+ removals across the bundle:

API Occurrences Notes
util.isArray, util.isBoolean, util.isDate, etc. 0 removed in Node 23
createCipher / createDecipher (without iv) 0 removed in Node 22
new Buffer(...) 2 (1) inside a lodash docstring comment, not executed; (2) tunnel-agent's proxy-auth path that we never invoke. Emits DEP0005 but still works on node24

Nothing blocks node24 execution.

Reproducibility

NODE_OPTIONS=--openssl-legacy-provider npm run package produces a byte-identical dist/index.js. The verify-dist CI job (added in #3) will confirm on this PR.

Downstream follow-up

After this merges, namecheap/terraform-provider-namecheap needs a SHA-pin rotation (two uses: lines in ci.yml). Same pattern as machulav#158 → provider machulav#159.

The action.yml was still declaring 'using: node12', the oldest Node
runtime GitHub ever supported. GitHub has been auto-shimming forward
to node16 / node20 via ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION for
years; the current runner (v2.333.1, per #3) surfaces the warning:

  Node.js 20 actions are deprecated. Actions will be forced to run
  with Node.js 24 by default starting June 2nd, 2026.

Declaring node24 explicitly makes the runtime match what the runner
already ships (externals/node24) and removes the deprecation warning
from every consumer's CI page.

Compatibility:
- dist/index.js reviewed for Node-22+ removals (util.isArray,
  createCipher, etc.) — none present.
- Two 'new Buffer(...)' occurrences: one inside a lodash docstring
  comment (not executed), one in tunnel-agent's proxy-auth path
  (we never pass proxyAuth). 'new Buffer' emits DEP0005 on node24
  but still works; no runtime break.
- Verified dist is reproducible: NODE_OPTIONS=--openssl-legacy-provider
  npm run package produces byte-identical dist/index.js.

Consumers pinning this action by SHA (e.g. namecheap/terraform-
provider-namecheap) will rotate to the new commit in a follow-up.

Signed-off-by: yuriyryabikov <22548029+kurok@users.noreply.github.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