FAQ after my dagger.io talk

I skipped a few topics during the talk (intentionally and unintentionally) and got a few questions afterwards. I will paraphrase and try to answer a few below:

  • Q: What about the (re-)integration with CI platform like GitLab? It seems like dagger.io is kind of a monolithic blackbox from the perspective of these platforms.

  • A: Yes, but that is a feature in my opinion. You don’t want to couple to a specific platform. Develop your pipeline according to your needs first. You can then selectively run actions on your CI platform and expose data (artifacts, test reports, …) as needed. As long as everything is run inside the same docker engine, caching will just work. If you then need to scale out eventually, you can use external caches1. I would strive for not having too much complexity in script snippets in .gitlab-ci.yml files. (Maybe GitLab should buy dagger.io and just replace its pipeline feature with it 😉)

  • Q: What about testing? How to test your actions?

  • A: Cuelang is good at defining constraints and is therefore also a good fit to define assertions. Best practice at the moment is to run them through the Bash automated testing system2 and define your assertions via cuelang constraints:

    export: files: {
      				"/jq-version.txt":   =~"^jq"
      				"/curl-version.txt": =~"^curl"

    Test example in dagger alpine action3

If you have comments or questions, click here.