This is our first major release since the beginning of our private beta last year, and it is based entirely on your feedback.
To all of you who have invested the time to test our nearly 40 releases; to report issues, suggest improvements, contribute and review code and documentation: thank you! This release would not be possible without you.
Please note that, unfortunately, this release is not backwards compatible: plans written for dagger 0.1 will not run on version 0.2. Automatic migration is not supported, but manual migration is relatively straightforward. Going forward, we plan to make backwards compatibility a priority, either by not breaking APIs, or providing seamless migration if we do. If you need help migrating your plan, we will be happy to assist you!
This release has one focus: improve the developer experience. It features a redesigned CLI and powerful new APIs.
The result is a completely new way to develop CI/CD pipelines: more productive, more portable… and way more fun!
We have radically simplified the process of setting up and configuring a pipeline. From having to learn half a dozen different commands and configuration files... to just one step: write the plan.
In Dagger 0.2, every aspect of your pipeline is controlled, declaratively, in your plan. In addition to making Dagger simpler to understand and use, it makes it natively compatible with declarative patterns such as gitops. Learn more about the Dagger Plan.
Dagger’s superpower is its lego-like composition model: simple actions can be composed to form a more complex one; which in turn can be composed again; and so on, until even the most complex pipelines can be assembled at a fraction of the usual cost, and at higher quality.
The foundation of this model is the Action API: a complete framework for composing arbitrarily complex automations out of standardized primitives, declaratively, using CUE and Buildkit. Learn more about the Action API.
We have simplified the dagger CLI so that anyone can intuitively understand what your pipelines do and how to use them, even if they’ve never used Dagger. No knowledge of CUE required!
Running a pipeline is as simple as dagger do ACTION. For example, dagger do build, dagger do test, dagger do deploy. Actions are loaded directly from your plan, so you can declaratively control your pipeline's command-line experience. Best of all, dagger do --help dynamically loads available actions and presents them to the user.
In dagger 0.2, a plan may use the Client API to interact with the client machine in a variety of ways: read or write to the filesystem; access environment variables; open network connections; query platform information; and even execute commands. This allows seamless integrations into your existing tooling and infrastructure.
For example, your development machine may have Docker credentials stored in the MacOS keychain; your CI runner may be configured to request ephemeral tokens for a specific profile before each AWS operation; or you may want to run tests against a local source code checkout. These integrations cannot be sandboxed in a container: they require access to the client machine. The Client API makes them possible in just a few lines of CUE.
Secrets are a crucial part of any CI/CD pipeline, which is why Dagger introduced native support for secrets from the very beginning. Dagger 0.2 expands and improves this feature in several ways:
Dagger is a community-driven project. We develop in the open, and anyone is welcome to join the fun, no matter how experienced. Whether you’re a seasoned engineer, or looking to make your first open-source contribution, there are many ways you can contribute. Come say hello on our Discord server!