Config as Code
Concourse pipelines are set exclusively via fly set-pipeline from a YAML file — there’s no UI for defining or editing a pipeline at all.
This isn’t optional discipline layered on top of the tool; it’s the only way the tool works, which removes an entire category of “someone clicked something in the UI and now it’s undocumented” failures. Every pipeline change is a diffable, reviewable file, not a state that only exists inside the tool’s own database.
Related
- Jenkins: pipelines as code — the same instinct, applied where the tool makes it a discipline rather than a requirement.