Skip to content

ci(deps): route dependabot through the action-pins manifest#403

Merged
joshua-temple merged 1 commit into
mainfrom
ci/dependabot-action-pins
Jun 27, 2026
Merged

ci(deps): route dependabot through the action-pins manifest#403
joshua-temple merged 1 commit into
mainfrom
ci/dependabot-action-pins

Conversation

@joshua-temple

@joshua-temple joshua-temple commented Jun 27, 2026

Copy link
Copy Markdown
Collaborator

What

Wires dependabot to the action-pins single-source-of-truth so its bumps land in the manifest, not in generated files.

  • .github/dependabot.yml: adds exclude-paths to the github-actions ecosystem for the two generated workflows that carry bumpable action refs (orchestrate.yaml, promote.yaml), so dependabot stops opening drift-failing PRs against them (the chore(deps): bump actions/checkout from 6.0.3 to 7.0.0 #272/chore(deps): bump actions/github-script from 7.1.0 to 9.0.0 #268 pain). Three files carry the AUTO-GENERATED by cascade header; the third (.github/actions/manage-release/action.yaml) has zero uses: refs so dependabot cannot bump it and no drift is possible there. Hand-written workflows keep being bumped (the consistency lint forces a coordinated manifest update if they diverge). exclude-paths verified against the dependabot options reference (glob, per-ecosystem, relative to directory).
  • .github/workflows/action-pins.yml: a non-executing anchor (workflow_dispatch-only, default-false gate) listing all 9 governed actions as uses:@sha # version, giving dependabot a parse target to bump the manifest's pins.
  • action_pins_anchor_test.go: sync guard asserting the anchor covers every manifest action (completeness); the existing consistency lint enforces correctness.

Verification

go build/test (2022 pass), golangci-lint, actionlint clean. Guardrails clean, GPG-signed + DCO. exclude-paths verified valid against the official docs.

Honest residual

Whether dependabot opens bump PRs against the gated anchor, and whether exclude-paths skips the generated files, are confirmable only on dependabot's next scheduled run. Documented fallback (scheduled manifest refresh, mirroring cli_version_sha) remains. Degrades safely (worst case is the prior noise, which the drift check still catches).

Final step of the action-pins single-source-of-truth goal.

Exclude the generated orchestrate.yaml and promote.yaml from the
github-actions updater via exclude-paths so a Dependabot bump never lands in
a generated workflow and trips the Workflow Drift Check. Hand-written
workflows keep being bumped, and the consistency lint forces a coordinated
action_pins.yaml update when they diverge.

Add .github/workflows/action-pins.yml, a non-executing anchor that references
every pinned action so the github-actions updater has one tracked bump
entrypoint for each (including actions/create-github-app-token, which appears
only in the now-excluded generated workflows). TestActionPinsAnchorCoversManifest
keeps the anchor a complete and correct mirror of action_pins.yaml.

Signed-off-by: Joshua Temple <joshua.temple@stablekernel.com>
@joshua-temple joshua-temple merged commit 63732c8 into main Jun 27, 2026
12 checks passed
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