đź’« Introducing Dagger: a new way to create CI/CD pipelines!
Read more
Back to blog list

Europa Rising: Introducing Dagger 0.2

astronaut scanning a plan

Today we are proud to introduce dagger 0.2, codename Europa.

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.

Migrating from 0.1 to 0.2

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!

Learn more about migrating to 0.2.

What's new in dagger 0.2?

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!

One simple configuration for everything: the Plan

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.

Lego for your pipelines: the Action API

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.

One simple command: dagger do

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.

Integrate dagger anywhere: the Client API

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.

Learn more about the Client API

Secure by default: the Secrets API

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 secrets are never merged into the plan, which helps prevent credential leaks. And just in case you accidentally print a secret’s contents in your action logs… Dagger will automatically detect it and scrub it. You’re welcome!
  • Using the new Client API, secrets can now be loaded from virtually any source: a file, an environment variable, a proprietary KMS, a vault service, a local keychain, etc.
  • Actions can now dynamically create their own secrets, using the #NewSecret core action.
  • Actions can now perform common operations against the contents of a secret, securely, without accessing the contents directly (to avoid leaks). Operations include extracting a secret from a JSON- or YAML-encoded envelope, and trimming space characters.
  • Secrets can now be injected into containers as environment variables, in addition to temporary files

Learn more about the Secrets API


Get involved!

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!