Skip to main content

Dagger vs. Other Software

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:

  1. 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.
  2. 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 to 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.