| Hi there, Dagger contributor here. One thing that generally is not immediately obvious is all the side benefits that using a programming language actually unlocks. Need type checking at build time? done. Need a package manager to version and publish your CI code? done. Need linting / formatting? done. Need to import functions from other places? done Need a test framework? done. Need a better collaborative IDE? done. All these things above bring massive improvements to both Dev and Devops engineers that need to interact with build & deploy pipelines daily. Generally it'll be quite difficult for any other configuration or custom language to provide these kind of tooling. |
> Need type checking at build time? done.
It's not unlocked by Dagger since every CI can already do this. And it's almost always about launching a (shell) command. How is that line easier in Go/any-language than in yaml?
> Need to import functions from other places? done
You mean "import functions into the CI code"? Why would I need that? It's usually possible through plugin systems, but I've never felt the need to put complex code into CI actions.
> Need a test framework? done.
Is that a test framework to test the CI code from within the CI? I hope I'll never want one! I guess I completely misunderstood...
On the other side of those "benefits", I can smell problems. For instance, when Docker images and Compose systems are built from the Dagger API. If the need for some advanced features comes in, this extra layer could prove costly.