Yeah … for CI files (like Github workflows & such), one of the best things I think I've done is just to immediately exec out to a script or program. That is, most of our CI steps look like this:
run: 'exec ci/some-program'
… and that's it. It really aids being able to run the (failing) CI step offline, too, since it's a single script.
Stuff like Ansible is another matter altogether. That really is programming in YAML, and it hurts.
Stuff like Ansible is another matter altogether. That really is programming in YAML, and it hurts.