Assumed audience: People familiar at a basic level with YAML and its use in continuous integration and deployment systems like GitHub Actions.
YAML pipelines are a pit of failure for CI/CD pipelines. They attract people because they seem declarative and the syntax is “easy”, and they have become “standard”, but everyone ends up encoding subroutines and data flow into them — and YAML is a terrible programming language!
I posted this on social media (Bluesky, Mastodon, LinkedIn) and it generated some good discussions. Most of all: what’s the alternative? Nothing super mainstream, but I find Pkl and Dhall both quite interesting, and both of them can spit out YAML, JSON, etc., which means you can use them with your existing CI system if you so desire. That doesn’t address the other problems with most of today’s CI systems, but it’s a good step and adopting one of them does address many of the problems of YAML while maintaining many of the benefits of a more declarative/limited language.
Other things to read about that suggest interesting alternatives in the CI space itself:
- Alexey Kladov’s CI Dream and CI in a Box posts
- Gregory Szorc’s Modern CI is Too Complicated and Misdirected
- RWX, which uses YAML but with some better/more sensible primitives than most of the major CI providers
- Build Systems à la Carte, arguably the canonical paper on the subject