Repository navigation
ci: pin every action to a commit SHA, kept current by Dependabot - #42
Conversation
A tag can be moved to other code; a commit SHA cannot. The release job runs these actions with contents: write and the crates.io token in reach, so each is pinned to the commit its tag points at today, with the version beside it. dtolnay/rust-toolchain is pinned to its stable branch's head, whose default toolchain is stable. Dependabot updates the pins weekly in one PR.
release.yml: the crates-verify and crates jobs keep the pins #32 gave them (actions/checkout v7.0.1, dtolnay/rust-toolchain master at 2026-10-16 with Rust 1.99.1), which built v0.1.5; the build and release jobs take this branch's.
#32 added the job after this branch pinned every action; its actions/checkout@v4 was the one tag left, now the v4.4.0 commit the other jobs use.
|
Merged
|
Third-party actions referenced by tag (
@v4,@stable) run whatever the tag points to today, so a compromised upstream can push new code under the same tag. The release job runs these actions withcontents: writeand the crates.io token in reach.uses:across the 5 workflows is now pinned to the commit its tag currently resolves to, with the exact version in a comment (actions/checkout@11d5960… # v4.4.0). Same code as today, so behaviour shouldn't change.dtolnay/rust-toolchainis pinned to itsstablebranch's head. That commit'stoolchaininput defaults tostable, so nowith:change is needed. Dependabot can't bump a branch pin, so update this one by hand occasionally..github/dependabot.yml: a weekly grouped PR keeps the pinned SHAs current. Rust security updates come from Dependabot security updates, which are now enabled in settings.After this merges, Settings → Actions → General → "Require actions to be pinned to a full-length commit SHA" can be turned on, so new unpinned actions get rejected.