Add Plumber to watch workflow security - #1051
Merged
Merged
Conversation
Scans the workflows on each push to master and on pull requests, and fails when something regresses: an unpinned action, an archived dependency, a known CVE, a dangerous trigger. The config starts from the generated defaults and is scoped to this repo, the few controls that are off carry a note explaining why. Each run publishes the score to score.getplumber.io, shown as a badge in the README.
AlfonsoUceda
approved these changes
Aug 3, 2026
AlfonsoUceda
left a comment
Contributor
There was a problem hiding this comment.
Thank you so much @Totara-thib going to merge it because it will help us to get the workflows more secured.
Contributor
Author
I'm really glad it could help! If you have any feedback or if you're looking for someone to maintain it, don't hesitate to reach out. |
5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Companion to #1050: the check added here flags the two unpinned actions until the pins land, then it goes green.
This adds Plumber to CI, the tool I used to find the unpinned actions in the first place. It scans the workflows on each push to master and on each PR, and fails when something regresses: an unpinned action, an archived dependency, a known CVE, that kind of thing.
plumber.yml: pinned by sha, minimal permissions, findings go to the security tab as SARIF (skipped on PRs from forks, the report stays as an artifact there)..plumber.yaml: generated defaults scoped to this repo: ruby/setup-ruby is on the trusted sources allowlist, and the branch protection control is off with a note in the file, the CI token cannot read those settings.README.md: one line, the score badge next to the gem and build ones.Score badge
I enabled
score-pushon the action: every run, on any branch, publishes the score to score.getplumber.io, and that feeds the badge in the README. Scores are public and the badge always shows the state of master. A failed publish never fails your CI. Until the first run on master the badge reads UNKNOWN in gray, then it flips to the grade. If you would rather not have it, drop the README line and thescore-pushinput, the rest works the same.With the pins in, this runs green with a score of A. Set
soft-fail: trueif you prefer report only, without gating PRs.To be fully transparent: I work on Plumber. If you do not want the tool in your CI, no hard feelings, the pinning PR is the one that matters and it stands on its own.
Before submitting the PR make sure the following are checked:
[Fix #issue-number](if the related issue exists).master(if not - rebase it).