Run this before a pipeline is first allowed to apply to production, and again after any material change to the workflow — a new job, a new credential path, a change to the approval gate, a change to the artifact flow.
Read it against the workflow file, not against a description of the workflow.
The commands are greps over .github/workflows/; adapt the paths for GitLab CI
or Jenkins, where the same questions apply to a different file.
What the pipeline is for
The pipeline is not a build system that happens to run Terraform. It is the answer to two questions: who is allowed to change production, and what exactly did they change. Every item here defends one of those two.
The items cover three things, and the page groups them by severity rather than by which: what runs on a pull request and with which credentials, what the apply actually executes and what stops two of them colliding, and what you find out afterwards.
What a failure means
A critical finding is a path by which a change can reach production without
the review the pipeline claims to enforce, or a way one failure becomes an
estate somebody has to reconcile by hand. None of them is subtle once written
down, and most of them arrive as a small convenience: an -auto-approve added
to unblock a release, a continue-on-error added because a scan was noisy on a
Friday.
The warn items are mostly about the pipeline being debuggable. They cost an
afternoon each and they are what stops a 03:00 failure being a mystery.
Access this needs
A checkout of the repository for the workflow greps, and read access to IAM in the account the plan role lives in for the one simulation. Nothing here runs the pipeline or writes anything.
Where the evidence goes
Record the workflow file revision the review covered, alongside the findings and owners. Four items here are attested rather than commanded — the paging path, the measurement, the partial-apply runbook, and the record itself — and each needs the name of the person who confirmed it.
Sign-off
- Reviewer: ________________ Date: ___________
- Platform owner: ___________ Date: ___________
- Approver for production applies: ___________ Date: ___________