Platform

Resources

Community

Platform

Resources

Community

Good-bye
"push & pray"

Good-bye
"push & pray"

Good-bye
"push & pray"

Write your pipelines in Go, Typescript or Python. Run locally or in CI. Iterate in seconds, not minutes.
Write your pipelines in Go, Typescript or Python. Run locally or in CI. Iterate in seconds, not minutes.
Write your pipelines in Go, Typescript or Python. Run locally or in CI. Iterate in seconds, not minutes.

Trusted by

Trusted by

Benefits

API-First
(Code > YAML)

API-First
(Code > YAML)

Replace complex CI scripts with a programmable platform for running containerized pipelines

Replace complex CI scripts with a programmable platform for running containerized pipelines

Benefits

API-First
(Code > YAML)

Replace complex CI scripts with a programmable platform for running containerized pipelines

Standardized Dagger Modules

Standardized Dagger Modules

Dagger Pipelines just chain reusable and standardized Dagger Functions - built by your teams or by the community

Dagger Pipelines just chain reusable and standardized Dagger Functions - built by your teams or by the community

Standardized Dagger Modules

Dagger Pipelines just chain reusable and standardized Dagger Functions - built by your teams or by the community

Eliminate Push and Pray

Eliminate Push and Pray

Dagger makes your pipelines truly portable. If it works on your laptop it'll work in CI. Any CI.

Dagger makes your pipelines truly portable. If it works on your laptop it'll work in CI. Any CI.

Eliminate Push and Pray

Dagger makes your pipelines truly portable. If it works on your laptop it'll work in CI. Any CI.

Cached for Speed

Cached for Speed

Super fast: Dagger avoids unnecessary rebuilds and test reruns when nothing has changed

Super fast: Dagger avoids unnecessary rebuilds and test reruns when nothing has changed

func (g *Golang) Base(version string) *Golang {
	mod := dag.CacheVolume("gomodcache")
	build := dag.CacheVolume("gobuildcache")
	image := fmt.Sprintf("golang:%s", version)
	c := dag.Container().
		From(image).
		WithMountedCache("/go/pkg/mod", mod).
		WithMountedCache("/root/.cache/go-build", build)
	g.Ctr = c
	return g

Cached for Speed

Super fast: Dagger avoids unnecessary rebuilds and test reruns when nothing has changed
func (g *Golang) Base(version string) *Golang {
	mod := dag.CacheVolume("gomodcache")
	build := dag.CacheVolume("gobuildcache")
	image := fmt.Sprintf("golang:%s", version)
	c := dag.Container().
		From(image).
		WithMountedCache("/go/pkg/mod", mod).
		WithMountedCache("/root/.cache/go-build", build)
	g.Ctr = c
	return g

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

@object()
// eslint-disable-next-line @typescript-eslint/no-unused-vars
class Ci {

  /**
   * example usage: "dagger call ci --source ."
   */
  @func()
  async ci(source: Directory): Promise<string> {
    // Use Golang module to configure project
    var goProject = dag.golang().withProject(source)

    // Run Go tests using Golang module
    await goProject.test()

    // Get container with built binaries using Golang module
    var image = await goProject.buildContainer()

    // Push image to a registry using core Dagger API
    var ref = await image.publish("ttl.sh/demoapp:1h")

    // Scan image for vulnerabilities using Trivy module
    return dag.trivy().scanContainer(dag.container().from(ref))
  }
}

Multi-Language

Multi-Language

Pipelines in the same language as your app. Each Dagger Function is just an API call away.

Pipelines in the same language as your app. Each Dagger Function is just an API call away.

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

@object()
// eslint-disable-next-line @typescript-eslint/no-unused-vars
class Ci {

  /**
   * example usage: "dagger call ci --source ."
   */
  @func()
  async ci(source: Directory): Promise<string> {
    // Use Golang module to configure project
    var goProject = dag.golang().withProject(source)

    // Run Go tests using Golang module
    await goProject.test()

    // Get container with built binaries using Golang module
    var image = await goProject.buildContainer()

    // Push image to a registry using core Dagger API
    var ref = await image.publish("ttl.sh/demoapp:1h")

    // Scan image for vulnerabilities using Trivy module
    return dag.trivy().scanContainer(dag.container().from(ref))
  }
}

Multi-Language

Pipelines in the same language as your app. Each Dagger Function is just an API call away.

First-class Observability

First-class Observability

My test failed.
Is it a broken Pipeline?

Gain visibility into every aspect of your pipelines. Interactive debugging right at the point of failure.

My test failed. Is it a broken Pipeline?

Gain visibility into every aspect of your pipelines. Interactive debugging right at the point of failure.

First-class Observability

My test failed. Is it a broken Pipeline?

Gain visibility into every aspect of your pipelines. Interactive debugging right at the point of failure.

Don't take our Word for it…

Don't take our Word for it…

  • Conor Barber

    Airbyte

    Before Dagger it was 'Push and Pray.' Now, we have the same tool running locally and in CI, and that just streamlines everything. Now our mantra is test, test, test, test.

  • Andy Gonzalez

    Fortune 500 company

    Replacing our makefiles with Dagger has greatly simplified our process for deployments since it’s much faster (1-3 hours to 3 minutes)...The power, flexibility and capability behind Dagger is something that gets me excited.

  • Tony Worm

    hof - the high code framework

    With Dagger, I can define what I want my desired results to be, and Dagger figures out what needs to happen to get those results.

  • James Qualls

    Discern

    We want to be able to ship every single day, multiple times a day, as fast as we possibly can. Dagger is enabling us to do that.

  • Kevin Minehart

    Grafana

    With Dagger, we were able to go from something that takes an hour to something that takes 8 minutes.

  • George MacRorie

    Flipt

    Dagger feels like an actual innovation in CI/CD. There's a real attention to getting feedback from everyone and feeding that back into the design and building something that people need.

  • Jason McCallister

    Craft Cloud

    Dagger with the Go SDK powers our build system. It allows us to programmatically construct a highly scalable and efficient pipeline for orchestrating complex builds, eliminating the need for manual Dockerfile manipulation.

    Read the testimonial

  • Jason McCallister

    Craft CMS

    Dagger is at the heart of everything we do. We use it to serve our customers and it's deeply embedded in our process. We have complete trust in it, it just works, and the feedback we've been getting from our users is really good!

  • Conor Barber

    Airbyte

    Before Dagger it was 'Push and Pray.' Now, we have the same tool running locally and in CI, and that just streamlines everything. Now our mantra is test, test, test, test.

  • Andy Gonzalez

    Fortune 500 company

    Replacing our makefiles with Dagger has greatly simplified our process for deployments since it’s much faster (1-3 hours to 3 minutes)...The power, flexibility and capability behind Dagger is something that gets me excited.

  • Tony Worm

    hof - the high code framework

    With Dagger, I can define what I want my desired results to be, and Dagger figures out what needs to happen to get those results.

  • James Qualls

    Discern

    We want to be able to ship every single day, multiple times a day, as fast as we possibly can. Dagger is enabling us to do that.

  • Kevin Minehart

    Grafana

    With Dagger, we were able to go from something that takes an hour to something that takes 8 minutes.

  • George MacRorie

    Flipt

    Dagger feels like an actual innovation in CI/CD. There's a real attention to getting feedback from everyone and feeding that back into the design and building something that people need.

  • Jason McCallister

    Craft Cloud

    Dagger with the Go SDK powers our build system. It allows us to programmatically construct a highly scalable and efficient pipeline for orchestrating complex builds, eliminating the need for manual Dockerfile manipulation.

    Read the testimonial

  • Jason McCallister

    Craft CMS

    Dagger is at the heart of everything we do. We use it to serve our customers and it's deeply embedded in our process. We have complete trust in it, it just works, and the feedback we've been getting from our users is really good!

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