I built my first Dagger function yesterday with Solomon Hykes, and just got it published up on the daggerverse!
Dagger is awesome, and I plan on continuing to find ways to use it. At a high level, dagger lets you use containers as a first-class object in code, and stitch together complex orchestration pipelines using real programming languages instead of bash.
Primitives like mounting in files/directories, running commands, building and publishing containers, environment variables and secrets are all available, type-safe, and programmable in Go, Python, or Typescript.
Dagger functions let you build abstractions and methods on top of these basic primitives that can then be exposed and reused by other Dagger functions. The entire experience is encapsulated by the `dagger` cli, which uses magical buildkit caching and orchestrations so it's all *fassstttt*. You can run it locally or in CI systems and get the same results, and confidence that things will actually work after a push.
As self-described a yamlbash enthusiast, I'm still excited at the thought of replacing those tangled messes with real code.
Check it out here, this version is capable of building Python wheel packages across a variety of Python versions, and can handle installation of extra build-time dependencies too, for when you need some ugly cmake stuff or other native libraries. Also, it uses wolfi and Chainguard images for all the execution and package handling :)