I've been playing with the Go SDK for the last couple hours and while I think it's awesome, I have a weird feeling about writing the pipeline in Go next to my Go project.
On one hand, it's like tests, so it should be fine.
One the other, there is a lot of repetition in there.
For example: I have a bunch of Go libraries, CLI tools that I generally want to build and publish the same way. I might want to turn some knobs here and there, but the pipelines are mostly the same.
I would assume that reusing a pipeline should be possible by writing extensions and just calling them (preferably not through GraphQL directly though, but some high level language like....CUE....or even YAML (I know, I know))
There are other concerns as well, like adding the Dagger SDK to the go.mod file of a Go library will make it a transitive dependency.
Another idea I had is writing a Go binary using the SDK and just reuse that across projects.
To sum up, I'm trying to find the right balance between using the Go SDK and writing extensions + hiding GraphQL behind a high level language.
This is also an interesting question for use cases where the pipeline is generally managed by a central team and dev teams want to occasionally extend it, but mostly they just want to use the default.
What do you think?