Adopting Dagger

import { dag, Directory, func } from "@dagger.io/dagger";

@func()
async build(src: Directory): Promise<string> {
  return await dag
    .container()
    .withDirectory("/src", src)
    .dockerBuild() 
    .publish("ttl.sh/hello-dagger");
}

"How do I get started?"

"How do I get started?"

"How do I get started?"

Daggerizing your first pipeline doesn't have to be hard or take a long time.

You can start to see the benefits of Dagger in just a few minutes.

Daggerizing your first pipeline doesn't have to be hard or take a long time.

You can start to see the benefits of Dagger in just a few minutes.

Daggerizing your first pipeline doesn't have to be hard or take a long time.

You can start to see the benefits of Dagger in just a few minutes.

Prepare for your Adventure 🧑‍🚀

First, pick the right pipeline

Wait, what do you mean by pipeline? A pipeline is any set of steps you do as part of your build/test process.
It can be as simple as creating a set of containers to run some basic tests
A pipeline is any set of steps you do as part of your Build/test process. It can be as simple as creating a set of containers and running some basic tests
  • Pick a pipeline that suffers from a hair-on-fire problem that Daggerizing can solve. Can't run locally? Super slow? Needs to be improved but everyone's afraid to change it?

  • The Pipeline is not so complicated that it's unlikely you can Daggerize it with a few hours of work.

  • You are deeply familiar with the project and elements of the pipeline.

Next, choose a language

Pick the language most of your app is written in,
hopefully, one you know well

Python, Go, or Typescript are fully supported by Dagger and are your best bet to start with

Step by Step guide to daggerizing 🚀

Daggerize a pipeline one YAML step at time

Daggerize a pipeline one YAML step at time

  1. Pick a YAML step to replace with a Dagger Function.

  2. Create a Dagger module and add your first Dagger Function

  3. Replace more YAML steps with more Dagger Functions

  4. Construct the pipeline by composing the Dagger Functions you've created to produce the desired resultsRun and test your pipeline locally

  5. Visualize your pipeline using Dagger Cloud

Extend your pipeline

Extend your pipeline

  1. Add services, secrets, error handling, custom types, and more

  2. Learn more about key Dagger concepts like function chaining, just-in-time artifacts, host access, and pipeline visualization in the Dagger user manual

  3. Use Dagger's Terminal feature to debug a pipeline

  4. Explore the Daggerverse to find inspiration or reuse useful Dagger Functions developed by the Dagger community

  1. Add services, secrets, error handling, custom types, and more

  2. Learn more about key Dagger concepts like function chaining, just-in-time artifacts, host access, and pipeline visualization in the Dagger user manual

  3. Use Dagger's Terminal feature to debug a pipeline

  4. Explore the Daggerverse to find inspiration or reuse useful Dagger Functions developed by the Dagger community

Fully integrate Dagger into your dev tool chain

Fully integrate Dagger into your dev tool chain

  1. Enable others on your team to use the Dagger CLI: Document a few dagger call commands in your README, explain how to use dagger functions to discover more functions, and link to the Dagger documentation to learn more

  2. Alternatively, If your team prefers to use another tool, you may want to wrap your dagger call invocations in existing Makefiles, configuration files or scripts

  3. Get your app devs' feedback as they use Dagger locally

  1. Enable others on your team to use the Dagger CLI: Document a few dagger call commands in your README, explain how to use dagger functions to discover more functions, and link to the Dagger documentation to learn more

  2. Alternatively, If your team prefers to use another tool, you may want to wrap your dagger call invocations in existing Makefiles, configuration files or scripts

  3. Get your app devs' feedback as they use Dagger locally

Trigger your pipeline from your CI

Trigger your pipeline from your CI

  1. Decide which CI event should trigger which Dagger pipeline

  2. Map inputs from the CI environment into arguments to the Dagger functions composing the pipeline

  3. Write the resulting dagger call command for each pipeline

  4. Review the integrations page in Dagger docs for your CI platform


  1. Decide which CI event should trigger which Dagger pipeline

  2. Map inputs from the CI environment into arguments to the Dagger functions composing the pipeline

  3. Write the resulting dagger call command for each pipeline

  4. Review the integrations page in Dagger docs for your CI platform


Get Involved With the community

Discover what our community is doing, and join the conversation on Discord & GitHub to help shape the evolution of Dagger.

Subscribe to our newsletter

Get Involved With the community

Discover what our community is doing, and join the conversation on Discord & GitHub to help shape the evolution of Dagger.

Subscribe to our newsletter

Get Involved With the community

Discover what our community is doing, and join the conversation on Discord & GitHub to help shape the evolution of Dagger.

Subscribe to our newsletter