chore: upgrade actions to Node 24 runtime (SHA-pinned) - #32
chore: upgrade actions to Node 24 runtime (SHA-pinned)#32John C. Bland II (johncblandii) wants to merge 6 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
Updates this repository’s GitHub Actions workflow dependencies to SHA-pinned revisions that run on the Node 24 runtime, addressing the Node 20 deprecation and improving supply-chain safety via immutable references.
Changes:
- Pin
actions/checkoutto a specific SHA (# v7.0.1) in workflows that perform checkouts. - Pin
actions/setup-go,goreleaser/goreleaser-action, andactions/upload-artifactto specific SHAs (with tag comments) in the feature-branch workflow.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| .github/workflows/validate-codeowners.yml | Pins actions/checkout to a specific SHA with a version comment. |
| .github/workflows/feature-branch.yml | Pins multiple commonly-used actions to specific SHAs with version comments. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
CI triage for this PRci-go — caused by this PR, fixed in 6adbad3. Bumping ci-docker — pre-existing, needs a maintainer. The build itself succeeds; the failure is the validate-codeowners — pre-existing, fixed in efc17cd. The |
The 1.15.1 composite's metadata step has a shell syntax error that breaks ci-docker on every branch; v3 fixes it and the inputs in use (registry/organization/repository/login/password/platforms) are unchanged.
|
Rather than leaving |
Erik Osterman (Cloud Posse) (osterman)
left a comment
There was a problem hiding this comment.
Verified all five SHAs against upstream tags and confirmed the six inputs this workflow passes all exist in v3's action.yml — the change works. But the description is actively wrong about the riskiest part of it, and I don't want that in the merge commit.
The body contradicts the diff. Under "still on Node 20" it states cloudposse/github-action-docker-build-push@1.15.1 was "left as-is." The diff bumps it to v3.1.0 — a major, added in commit dd5d95f, on the action that builds and pushes the published ghcr.io image. The body was never updated. Please fix it before merge.
That bump deserves a callout, not a footnote. ci-docker runs on push to main with packages: write and push: true. v3.1.0 changes tag generation — adds type=sha,format=long,priority=1001, adds type=schedule, applies latest on the default branch — and swaps to docker/build-push-action@v7. The tags consumers pull may differ after the next push to main. If that's intended, say so in the body; if not, it needs pinning down.
Also worth noting, not blocking:
- Pinning doesn't go transitive. v3.1.0's own
action.ymlfloatsdocker/metadata-action@v6,docker/build-push-action@v7,docker/login-action@v4,docker/setup-qemu-action@v4and third-partydcarbone/install-jq-action@v3.2.0. The supply-chain-safe claim stops at the first hop. version: latestfor the goreleaser binary is still floating — which is exactly what caused the v1→v2 schema break this PR is fixing. Worth pinning in the same pass.- The shared codeowners workflow's
ownersjob is hard-disabled upstream (if: ${{ false && ... }}), so real CODEOWNERS owner validation now runs nowhere. Pre-existing org-wide, but it's why that check reads "skipped" rather than "fixed."
Net positive that this drops the PUBLIC_REPO_ACCESS_TOKEN PAT usage. Just fix the body and I'll approve.
|
Erik Osterman (Cloud Posse) (@osterman) — body rewritten, thank you for catching the contradiction. Two things, one of them a respectful correction: Fixed: the "left as-is" line was stale — it predated commit dd5d95f. The body now leads with a dedicated section on the Verified before writing it into the body: the tag templates are actually byte-identical between 1.15.1 and v3.1.0 — 🤖 Addressed by Claude Code |
v3.2.1 ships the null Entrypoint/Cmd guards in the step-summary inspect, so summary generation is safe to re-enable.
|
Follow-through as promised: |
what
version comments:
actions/checkout@v4→@3d3c42e5...# v7.0.1actions/setup-go@v5→@b7ad1dad...# v7.0.0goreleaser/goreleaser-action@v5→@f06c13b6...# v7.2.3(with.goreleaserconfigmigrated to the v2 schema, validated with GoReleaser v2.17.1's
check)actions/upload-artifact@v4→@043fb46d...# v7.0.1cloudposse/github-action-docker-build-push@1.15.1→@02993d67...# v3.1.0— see belowdocker-build-push 1.15.1 → v3.1.0 (majors crossed — read this)
Get Metadatastep has a shell syntax error that has failedci-dockeronevery branch since 2025-12-24 — the job could not run at all. v3.1.0 fixes it.
registry,organization,repository,login,password,platforms) exist unchanged in v3'saction.yml.docker/metadata-actiontag templates are byte-identical between1.15.1 and v3.1.0 (
type=sha,type=schedule, branch/pr refs, semver patterns,lateston default branch,type=sha,format=long,priority=1001— all present in both).The underlying
docker/metadata-actionmoves v5→v6 anddocker/build-push-actionto v7,which should not change rendered tags for these template types, but is the layer to watch on
the first push to main.
docker/metadata-action@v6,docker/build-push-action@v7, etc. inside its composite.ff59bd5b...), which ships the null-Entrypoint/Cmdguards inthe step-summary inspect — the interim
summary: "false"workaround is reverted.why
being force-migrated to Node 24
every pinned SHA verified against its upstream tag
references
still on legacy runtimes (deliberately not bumped)
mszostok/codeowners-validator@v0.7.1— docker-based, unaffected by the node runtime deprecationcloudposse/github-action-docker-promote@0.3.0— no node24 release at the time of writing