Skip to content

SHA-pin all GitHub Actions; bump action-gh-release v2 -> v3.0.0#14

Merged
andrewyager merged 3 commits into
mainfrom
chore/bump-action-gh-release-v3
May 27, 2026
Merged

SHA-pin all GitHub Actions; bump action-gh-release v2 -> v3.0.0#14
andrewyager merged 3 commits into
mainfrom
chore/bump-action-gh-release-v3

Conversation

@andrewyager

@andrewyager andrewyager commented May 27, 2026

Copy link
Copy Markdown
Member

Summary

Two related workflow-hardening changes, applied consistently across ci.yml, release.yml, and test-signing.yml.

1. Bump softprops/action-gh-release v2 -> v3.0.0

Addresses the Node-20 deprecation warning that surfaced on the v1.1.0 release run. Upstream v3.0.0 is a runtime-only change — bundle moves from Node 20 to Node 24, no API/behavioural differences per the release notes.

2. SHA-pin every action

All uses: references now pin to a full commit SHA with a trailing comment showing the human-readable version:

Action SHA Version
actions/checkout 93cb6efe18208431cddfb8368fd83d5badbf9bfd v5.0.1
softprops/action-gh-release b4309332981a82ec1c5618f44dd2e27cc8bfbfda v3.0.0

Rationale: the release job has the code-signing PFX in scope via the protected release environment. A mutable third-party major tag is the textbook target for a supply-chain attack — if softprops or actions were ever compromised, repointing the tag would silently pull malicious code into the next run and could exfiltrate the cert. SHA-pinning removes that lever; future bumps now require a deliberate, reviewable change.

actions/checkout@v5 currently resolves to the same SHA as @v5.0.1, so the pin is a no-op in terms of bits shipped to runners today. The hardening kicks in the next time upstream releases a new minor or patch.

Test plan

  • Cut a throwaway test tag (e.g. v1.1.1-rc1) and confirm the release workflow runs without the Node-20 deprecation warning and publishes the release artifact.
  • Confirm the resolved SHAs match the noted versions:
    • gh api repos/actions/checkout/git/ref/tags/v5.0.1 --jq '.object.sha'
    • gh api repos/softprops/action-gh-release/git/ref/tags/v3.0.0 --jq '.object.sha'
  • CI passes on the PR head.

🤖 Generated with Claude Code

andrewyager and others added 2 commits May 27, 2026 18:26
The previous release workflow run logged the GitHub Actions deprecation
warning for Node 20-based actions:

  Node.js 20 actions are deprecated. The following actions are running
  on Node.js 20 and may not work as expected: softprops/action-gh-release@v2.

Upstream v3.0.0 is a runtime-only bump: bundle target moves from Node
20 to Node 24, no API or behavioural changes. The v2 line stays pinned
to 2.6.2 for fleets that don't yet have Node 24, which we don't need.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The release job runs in the protected `release` environment and has the
code-signing PFX in scope. A floating major tag (@V3) on a third-party
action means an upstream account compromise could be used to repoint
the tag at malicious code that exfiltrates the signing secrets or
modifies what gets uploaded post-signing.

Pin to the v3.0.0 commit so future bumps are deliberate and reviewable.
A trailing comment preserves the human-readable version so reviewers
don't have to resolve the SHA manually. `actions/checkout` is
first-party (GitHub itself) and is left on its floating major tag.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 27, 2026 08:28

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the release workflow to use a SHA-pinned softprops/action-gh-release v3.0.0 action, addressing the Node 20 deprecation warning while reducing mutable-tag supply-chain risk in the protected release job.

Changes:

  • Replaces softprops/action-gh-release@v2 with the reviewed commit SHA for v3.0.0.
  • Adds inline comments documenting why the third-party release action is pinned and how future updates should be handled.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Make the action-pinning policy consistent across the repo: every
workflow now references its dependencies by full commit SHA with a
trailing comment showing the human-readable version. The previous
commit pinned softprops/action-gh-release (third-party, runs in the
signing-secrets environment); this one applies the same treatment to
actions/checkout for consistency, even though it is first-party and
the supply-chain risk profile is lower.

@v5 currently floats to v5.0.1 (93cb6ef), so this is a no-op in terms
of bits shipped to the runner today; future v5.x bumps will now require
a deliberate SHA change rather than appearing implicitly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@andrewyager andrewyager changed the title Bump softprops/action-gh-release v2 -> v3.0.0, SHA-pin SHA-pin all GitHub Actions; bump action-gh-release v2 -> v3.0.0 May 27, 2026
@andrewyager andrewyager requested a review from Copilot May 27, 2026 09:27

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.

@andrewyager andrewyager merged commit 8446e74 into main May 27, 2026
2 checks passed
@andrewyager andrewyager deleted the chore/bump-action-gh-release-v3 branch May 27, 2026 09:32
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