Dagger vs. Other Software
This documentation is for an older version of Dagger, which is no longer actively maintained.
We encourage you to upgrade and refer to the documentation for the most current version.
If you cannot upgrade to the latest version, please contact us in the help forum on Discord. When contacting us, please let us know why you cannot move to the latest version. From there, our team will work with you on your use case.
What is Dagger?
Dagger is a portable devkit for CI/CD.
Using Dagger, software teams can develop powerful CI/CD pipelines with minimal effort, then run them anywhere.
Benefits of using Dagger include:
- Unify dev and CI environments. Write your pipeline once, Dagger will run it the same everywhere.
- Reduce CI lock-in. No more re-writing everything from scratch every 6 months.
- Rapid debugging of your pipelines. Dagger runs equally well on your local machine, and in CI. Dagger can be used with any CI environment (no migration required) and has two important advantages which make the overall experience less error-prone and more efficient:
How does it work?
- Reuse actions from a large and growing catalog.
- Tie it all together in CUE - a revolutionary declarative language invented at Google. No more YAML hell!
- Test and debug instantly on your local machine. No more waiting 10min to catch a typo.
- Run your pipelines on any Docker-compatible runtime, for maximum portability. This means most modern CI runners can run Dagger out of the box.
Dagger vs. CI (GitHub Actions, GitLab, CircleCI, Jenkins, etc.)
Dagger does not replace your CI: it improves it by adding a portable development layer on top of it.
- Dagger runs on all major CI products. This reduces CI lock-in: you can change CI without rewriting all your pipelines.
- Dagger also runs on your dev machine. This allows dev/CI parity: the same pipelines can be used in CI and development.
Dagger vs. PaaS (Heroku, Firebase, etc.)
Dagger is not a PaaS, but you can use it to add PaaS-like features to your CICD pipelines:
- A simple deployment abstraction for the developer
- A catalog of possible customizations, managed by the platform team
- On-demand staging or development environments
Using Dagger is a good way to get many of the benefits of a PaaS (developer productivity and peace of mind), without giving up the benefits of custom CICD pipelines (full control over your infrastructure and tooling).
Dagger vs. artisanal deploy scripts
Most applications have a custom deploy script that usually gets the job done, but is painful to change and troubleshoot.
Using Dagger, you have two options:
- You can replace your script with a DAG that is better in every way: more features, more reliable, faster, easier to read, improve, and debug.
- You can extend your script by wrapping it, as-is, into a DAG. This allows you to start using Dagger right away, and worry about rewrites later.
Dagger vs. Infrastructure as Code (Terraform, Pulumi, Cloudformation, CDK)
Dagger is the perfect complement to an IaC tool.
- IaC tools help infrastructure teams answer questions like: what is the current state of my infrastructure? What is its desired state? And how do I get there?
- Dagger helps CICD teams answer question like: what work needs to be done to deliver my application, in what order, and how do I orchestrate it?
It is very common for a Dagger configuration to integrate with at least one IaC tool.
Dagger vs. Build Systems (Make, Maven, Bazel, Npm/Yarn, Docker Build, etc.)
Dagger is complementary to build systems. Most Dagger configurations involve integrating with at least one specialized build. If several build systems are involved, Dagger helps integrate them into a unified graph.