Skip to content

fix: move nested actions off Node 20 - #156

Draft
Svilen-Stefanov wants to merge 2 commits into
mainfrom
fix/nested-actions-node24
Draft

Svilen-Stefanov wants to merge 2 commits into
mainfrom
fix/nested-actions-node24

Conversation

@Svilen-Stefanov

Copy link
Copy Markdown
Contributor

Stacked on #155. Merge that first. Until it lands, this diff also shows #155's commit (bff144d). Once #155 is squash-merged I'll rebase this onto main, leaving only the version bumps.

Problem

Four of the actions that action.yml uses still run on Node 20, which GitHub is retiring on its runners. Once that happens they fail for every adopter, and pinning them by SHA (#155) means nothing will move them for us.

Action Pinned (after #155) Runtime
actions/checkout v4.4.0 node20
actions/setup-python v5.6.0 node20
actions/upload-artifact v4.6.2 node20
marocchino/sticky-pull-request-comment v2.9.4 node20
actions/setup-java v5.7.0 node24 (no change needed)

Change

Each one goes to the oldest major that runs on Node 24, so this PR changes the runtime and nothing else:

Action Now Runtime
actions/checkout fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 (v5.1.0) node24
actions/setup-python ece7cb06caefa5fff74198d8649806c4678c61a1 (v6.3.0) node24
actions/upload-artifact b7c566a772e6b6bfb58ed0dc250532a479d7789f (v6.0.0) node24
marocchino/sticky-pull-request-comment 5770ad5eb8f42dd2c4f34da00c94c5381e49af88 (v3.0.5) node24
  • I skipped upload-artifact v5 because it still runs on Node 20 by default.
  • I held back newer majors on purpose. checkout v6 moves persisted credentials to a separate file, and checkout v7 refuses to check out fork PRs under pull_request_target / workflow_run. Both are behaviour changes we'd want to look at separately.
  • The GHES notes in README.md and docs/COMMIT_STRATEGY.md said upload-artifact@v4. They now say v4 and later, which is still accurate after this change.

Compatibility

  • Self-hosted runners: these versions need Actions Runner v2.327.1 or newer. GitHub-hosted runners already meet that. Adopters on old self-hosted runners would need to update, but they'll have to anyway once Node 20 is gone.
  • Every input and output action.yml uses (header, number, message, path; name, path, retention-days, if-no-files-found, output artifact-url; the checkout inputs; python-version) exists in the new versions with the same defaults.

Verification

  • Each SHA comes from git ls-remote, and I read each version's runs.using at that SHA.
  • python -m unittest discover -s tests: 259 tests, 7 skipped, all OK. That includes test_action_pinning.py from fix: pin nested actions by commit SHA #155.
  • actionlint is clean.
  • Not exercised against a live review or sync run yet.

🤖 Generated with Claude Code

Stephan202 and others added 2 commits October 25, 2026 14:47
Repositories can require actions to be pinned to a full-length commit
SHA. GitHub enforces that on the actions used by a composite action as
well, so the tag references in `action.yml` made the action fail at
startup, with a bare `startup_failure`, for every adopter with that
policy enabled.

Pin all five actions that `action.yml` uses to the commit their current
moving tag or branch resolves to, with the exact release as a comment.
This does not change which code runs. Add a test that rejects any
non-local `uses:` in `action.yml` that is not pinned to a full SHA.
Four of the actions that action.yml uses still run on Node 20, which
GitHub is retiring on its runners: checkout v4, setup-python v5,
upload-artifact v4 and sticky-pull-request-comment v2. setup-java v5
already runs on Node 24.

Bump each to the oldest major that runs on Node 24, keeping the change
to the runtime move and nothing else:

- actions/checkout v4.4.0 -> v5.1.0
- actions/setup-python v5.6.0 -> v6.3.0
- actions/upload-artifact v4.6.2 -> v6.0.0 (v5 still defaults to Node 20)
- marocchino/sticky-pull-request-comment v2.9.4 -> v3.0.5

Every input and output the action uses exists in the new versions with
the same defaults. Later majors were skipped on purpose: checkout v6
moves persisted credentials to a separate file, and checkout v7 refuses
fork checkouts under pull_request_target and workflow_run.

These versions need Actions Runner v2.327.1 or newer, which matters for
adopters on self-hosted runners.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@codeboarding-review

codeboarding-review Bot commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

CodeBoarding review

Status: 0 changed components (no analysed file changed)

See the full change in CodeBoarding.

graph LR
    n_Action_Workflow_Scripts["Action Workflow Scripts"]
    classDef added fill:#1f883d,stroke:#0b5d23,color:#ffffff;
    classDef modified fill:#bf8700,stroke:#7d4e00,color:#ffffff;
    classDef deleted fill:#cf222e,stroke:#82071e,color:#ffffff,stroke-dasharray:5 3;
Loading

download artifacts · run 40207384284

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.

2 participants