Skip to content

build(ci): move every action off the deprecated Node 20 runtime - #66

Merged
bgard68 merged 1 commit into
mainfrom
build/node24-actions
Aug 2, 2026
Merged

build(ci): move every action off the deprecated Node 20 runtime#66
bgard68 merged 1 commit into
mainfrom
build/node24-actions

Conversation

@bgard68

@bgard68 bgard68 commented Aug 2, 2026

Copy link
Copy Markdown
Owner

GitHub is retiring Node 20 on the runners. The deploy log has been warning about download-artifact for weeks — a sweep of every pinned SHA found eight references across four workflows still declaring it.

To be clear about what this is: it is the action's own JavaScript runtime, declared in its action.yml, not the Node your code uses.

Action From To
actions/checkout v4 v7
actions/setup-dotnet v4 v6
actions/download-artifact v4 v8
github/codeql-action v3 v4
docker/setup-buildx-action v3 v4
docker/build-push-action v6 v7

Two of these were mine

gate-probes.yml was written yesterday by copying pins out of an existing workflow — which carried the old SHAs along with the formatting. A new file inherits whatever it was copied from, staleness included. Worth noting because the same thing will happen to the next file anyone copies.

The one compatibility question

download-artifact goes to v8 while upload-artifact stays at v7, and these two must agree on the artifact backend. That gap is fine: there is no upload-artifact v8, so if they had to match, v8 would be unusable by anyone. Both are post-v4 and share the same backend.

Verification

Every pinned SHA was checked by reading its action.yml at that exact commit — before, to find them, and after, to confirm none is left. aquasecurity/trivy-action and gitleaks/gitleaks-action are composite/docker actions with no Node runtime, so they are unaffected.

The deploy job's smoke test exercises download-artifact end to end on merge, which is the one with real breakage potential.

GitHub is retiring Node 20 on the runners, and eight action references across
four workflows still declared it. The deploy log has been warning about
download-artifact for weeks; a sweep of every pinned SHA found the rest.

  actions/checkout            v4 -> v7
  actions/setup-dotnet        v4 -> v6
  actions/download-artifact   v4 -> v8
  github/codeql-action        v3 -> v4
  docker/setup-buildx-action  v3 -> v4
  docker/build-push-action    v6 -> v7

Two of them were mine: gate-probes.yml was written yesterday by copying the
pins out of an existing workflow, which carried the old ones along with the
formatting. A new file inherits whatever it was copied from, including the
staleness.

download-artifact v8 pairs with upload-artifact v7 despite the major-version
gap. There is no upload-artifact v8 — if they had to match, v8 would be
unusable by anyone. Both are post-v4 and share the same artifact backend.

Verified by re-reading action.yml at every pinned SHA: no node20 left.
@bgard68
bgard68 merged commit 4ef78ac into main Aug 2, 2026
3 checks passed
@bgard68
bgard68 deleted the build/node24-actions branch August 2, 2026 15:32
bgard68 added a commit that referenced this pull request Aug 2, 2026
Completes on this branch what #66 did on main. The sweep there only covered
main, so these were reported clean and were not — the same inference mistake
the branch-scoped checks in this repository exist to prevent.

Verified by reading action.yml at each pinned SHA and confirming node24.
bgard68 added a commit that referenced this pull request Aug 2, 2026
Completes on this branch what #66 did on main. The sweep there only covered
main, so these were reported clean and were not — the same inference mistake
the branch-scoped checks in this repository exist to prevent.

Verified by reading action.yml at each pinned SHA and confirming node24.
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