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.