Repository navigation
fix(release): read runner and Action pins from the lines Dependabot rewrites - #517
Conversation
…ewrites Dependabot bumps of a workflow `uses:` SHA or the Dockerfile FROM digest failed Product policy because Test-ReleasePins.ps1 and verify-worker-image.sh required those pins to match release/dependencies.json, which Dependabot cannot edit. scripts/ReleasePinSources.ps1 now reads the runner image, version and digest from the Dockerfile FROM line, and each external Action's commit and version from its `uses: ...@<sha> # vX.Y.Z` lines, requiring one release per repository. The release checks, freshness gate and compatibility manifest use those values; the manifest drops its runner and githubActions entries. The freshness gate checks the runner archive digest against the SHA-256 the runner release notes publish instead of a hand-copied checksum. Closes #510 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VcupojEVPjg9zYgTTu3TNk
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2013532ac0
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
With Action bumps now passing Product policy, the vendor-actions lane armed by pr-automerge-dependabot.yml merges minor and patch bumps once ci-status passes; the docs said no update is ever auto-merged. The freshness gate also excludes reusable-workflow repositories, as Test-ReleasePins.ps1 does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VcupojEVPjg9zYgTTu3TNk
|
claude-security-review reviewed Security review: PR #517, incremental since 04d9109I found no security issues in the three files changed since the last review:
Trust-control and manifest lens: none of the changed files is a trusted-path or hold-path file. There is no plugin manifest or instruction-surface change. No pin was loosened, and no action, permission or token scope changed. critical-findings: 0 |
|
claude-review reviewed Incremental review of
|
…ests Dependabot rewrites only the Dockerfile FROM line, so the hard-coded base.name and base.digest labels went stale on a runner bump and failed verify-worker-image.sh. Drop them (release provenance records the resolved base digest) and assert they stay absent. release-pins.test.cjs now reads the checkout pin and FROM line from the repository instead of hard-coding them, so it passes after the bumps it models. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VcupojEVPjg9zYgTTu3TNk
Closes #510
Summary
Every Dependabot bump of a workflow
uses:SHA or the DockerfileFROMdigest failedProduct policy, because the release checks required those pins to matchrelease/dependencies.json, which Dependabot cannot edit (#505, #506 and #514 were the replacement PRs). The pins are now read from the lines Dependabot rewrites.Fix
scripts/ReleasePinSources.ps1reads the runner image, version and digest from the singleFROM ghcr.io/actions/actions-runner:<v>@sha256:<d>line, and each external Action's commit and version from itsuses: ...@<sha> # vX.Y.Zlines. It fails withfile:linewhen an Action has no release comment or two uses name different releases.Test-ReleasePins.ps1,Test-DependencyFreshness.ps1andNew-CompatibilityManifest.ps1use those values.verify-worker-image.shandverify-existing-release.shread theFROMline. Thecompatibility.jsonshape is unchanged.release/dependencies.jsondropsrunnerandgithubActions, andTest-ReleasePins.ps1refuses them if they come back. Checksums, tooling digests, sources and the ci-workflowsrepositoryPinsstay.archiveSha256only fed the freshness gate. The gate now compares the asset digest GitHub reports with the SHA-256 published in the runner release notes (<!-- BEGIN SHA linux-x64 -->). Both values matched for v2.338.2, v2.338.1, v2.337.0, v2.336.0 and v2.334.0 (gh api repos/actions/runner/releases/tags/<tag>). A runner bump therefore needs no checksum edit.vendor-actionslane (pr-automerge-dependabot.yml) will auto-merge minor and patchactions/*,github/*andanthropics/*bumps onceci-statuspasses.docs/releases.mdandREADME.mdsaid no update is ever auto-merged. They now describe that lane. The lane's config is unchanged.Verification
pwsh scripts/Test-ReleasePins.ps1passes.node --test .github/scripts/*.test.cjspasses (27 tests). The newrelease-pins.test.cjscovers a grouped Action bump and a runner bump with no manifest edit, mismatched SHAs across files, and a missing release comment.go test ./..., shellcheck and shfmt are clean.Test-ReleasePins.ps1.githubActionsentries.New-CompatibilityManifest.ps1emits the samedependenciesobject (runnerVersion 2.338.2).Test-DependencyFreshness.ps1, which needs a release token. It runs at the next tag.Related
🤖 Generated with Claude Code
https://claude.ai/code/session_01VcupojEVPjg9zYgTTu3TNk