CI that keeps up.

Learn

Guides to CI, testing, and builds, and where Dagger fits.

  1. How do I migrate from GitHub Actions to Dagger?Install Dagger's official modules for your stack, run the same checks locally, then turn on Cloud Checks and retire workflows one at a time.
  2. How do I set up CI for a Go project?Use one Go toolchain, test every module, start test services, and catch stale go generate output. The dagger.io/go module runs it all with dagger check.
  3. How do I run Playwright tests against Docker Compose in CI?Start the app with Compose before the tests, set baseURL, use the Playwright image, and control test data. Dagger's modules do this locally and in CI.
  4. How do I migrate from Jenkins to Dagger?Install Dagger's official modules, move custom steps to a small Dang module, and run dagger check from Cloud Checks or a thin Jenkinsfile.
  5. Bazel vs Dagger: no BUILD files to writeBazel is a build system that caches fine-grained build actions. Dagger runs your existing tools, Bazel included, as cached checks in containers.
  6. Dagger vs Blacksmith: a cache for every operationBlacksmith runs your GitHub Actions jobs on faster, cheaper runners. Dagger replaces the jobs with checks that run the same locally and in Dagger Cloud.
  7. Dagger vs Buildkite: run the CI checks on your laptopBuildkite runs CI pipelines on agents that you host or it hosts. Dagger runs checks that work the same on your machine, on your servers, and in its cloud.
  8. How do I run pytest the same way locally and in CI?Pin Python, pytest, and the lockfile, give tests their services, and report each test. Dagger's pytest module does it the same way on a laptop and in CI.
  9. How do I migrate from GitLab CI to Dagger?Install Dagger's official modules and run the checks locally. Then have one .gitlab-ci.yml job run dagger check, and remove the old jobs one at a time.
  10. How do I make Go builds faster?Keep GOCACHE and GOMODCACHE between runs, keep the inputs of each cache key stable, and let go test reuse results. Dagger's Go module keeps both caches warm.
  11. How do I run Vitest in CI and split tests across runners?Run vitest run with your own Vitest and a coverage threshold, and merge blob reports from shards. Dagger's Vitest module runs it the same locally and in CI.
  12. How do I cache Rust builds in CI?Keep Cargo's downloads and target/ between runs, follow Cargo.lock and toolchain changes, and share the cache: rust-cache, sccache, or Dagger cache volumes.
  13. How do I enforce Prettier formatting in CI?Pin one exact Prettier version, fail CI with prettier --check, and ignore the same files everywhere. Dagger's Prettier module does this locally and in CI.
  14. How do I migrate from CircleCI to Dagger?Install Dagger's official modules, run the same checks locally, then move CircleCI jobs to Cloud Checks one at a time, or keep CircleCI as the trigger.
  15. How do I run golangci-lint the same way locally and in CI?Pin one golangci-lint version, commit a v2 config, lint every Go module, and keep the cache. The dagger.io/go/golangci-lint module does it in one check.
  16. How do I run PSScriptAnalyzer in CI?Run a pinned PSScriptAnalyzer on every script with -EnableExit, and keep rules in PSScriptAnalyzerSettings.psd1. Dagger's module does it locally and in CI.
  17. How do I run Staticcheck the same way locally and in CI?Pin Staticcheck, commit staticcheck.conf, check every Go module with a supported Go, and keep the cache. The dagger.io/go/staticcheck module does it all.
  18. How do I cache Go builds in CI?Persist GOCACHE and GOMODCACHE, key them safely, and share them across runners: setup-go, GitLab cache, GOCACHEPROG, or Dagger's Go module cache volumes.
  19. How do I migrate from Buildkite to Dagger?Install Dagger's official modules and run the checks locally. Then run them with Cloud Checks or a thin Buildkite pipeline, and remove old steps one by one.
  20. How do I run Jest in CI and split the tests across runners?Run the project's own Jest with --ci so new snapshots fail, and split a large suite with --shard. Dagger's Jest module runs it the same locally and in CI.
  21. How do I run Maven builds the same way locally and in CI?Pin the JDK and Maven with the wrapper, run mvn verify as the verdict, and cache ~/.m2. The Dagger Maven module does all of this the same way locally and in CI.
  22. How do I run Biome in CI?Pin the exact Biome version, run its formatter and linter as one check that fails CI, and apply safe fixes. Dagger's Biome module does this in one place.
  23. How do I set up CI for a Deno project?Run deno fmt --check, lint, check, and test on a pinned Deno release with minimal permissions and cached deps. Dagger's Deno module does this locally and in CI.
  24. How do I run ESLint the same way locally and in CI?Run the project's own ESLint on one Node.js version, lint each package with its config, and fail on errors. Dagger's ESLint module does this in one place.
  25. How do I set up CI for an Android app?Pin the JDK and Android SDK, cache Gradle, and run lint and unit tests on one variant. The dagger.io/android module does it the same way locally and in CI.
  26. How do I test Swift packages on Linux in CI?Run swift build and swift test in a pinned swift Linux image, with local packages mounted. The Dagger swift module does this the same way locally and in CI.
  27. How do I lint Helm charts in CI?Pin one Helm version, lint every chart, render each CI values file with helm template, and build dependencies. Dagger's Helm module does it locally and in CI.
  28. How do I run Playwright tests in Docker in CI?Run tests in the Playwright image for your exact version, with no browser cache and baselines from that image. Dagger's module does this locally and in CI.
  29. How do I run ShellCheck in CI?Run one pinned ShellCheck version on every script, fail on findings, and keep its config in the repo. Dagger's ShellCheck module does it locally and in CI.
  30. How do I run Docker builds and Compose in CI?Lint each Dockerfile, build every image and test stage, validate Compose files, and start services in order. Dagger's Docker module does it locally and in CI.
  31. How do I run GitLab CI jobs locally?Make the pipeline portable: put the jobs' steps and services in Dagger, run `dagger check` on your laptop, and call it from a thin .gitlab-ci.yml.
  32. How do I run a Buildkite pipeline locally?Check pipeline.yml with bk pipeline validate. Then move the steps and Postgres into Dagger, so dagger check runs them on your laptop and on Buildkite.
  33. How do I run GitHub Actions locally?Make the workflow portable: put its steps and Postgres and Redis services in Dagger, and run `dagger check` on your laptop and in GitHub Actions.
  34. How do I run integration tests against real databases?Give each test run a fresh database or Kafka container, healthy and at a known address. Dagger does it the Compose way or the Testcontainers way.
  35. What are the alternatives to GitHub Actions?Runner vendors such as Blacksmith run your workflows faster or cheaper. Buildkite and CircleCI replace GitHub Actions, and Dagger makes pipelines portable.
  36. Which development tools can Dagger replace or consolidate?Dagger can replace your CI platform, hosted runners, test splitter, and Testcontainers, and cover part of CI observability and build caches.
  37. What is Dagger's role in an agentic software factory?Agents decide what to change. Dagger runs the builds and tests that verify each change, the same way for agents, developers, and CI.
  38. Can Dagger lower CI costs?Yes, when work repeats. Dagger reuses cached results, runs only the tests you select, and bills used CPU and memory, with repeat work 5× cheaper.
  39. How do I reproduce a Jenkins build locally?Pin the build image by digest and run the Jenkins steps in it locally, or let Dagger's Maven module run them in that image on a laptop and in Jenkins.
  40. How do I sandbox an AI coding agent?Run the agent's builds and tests in a disposable container that has the toolchain and test services. Dagger defines it in code for local runs and CI.
  41. How do I cache bun install in CI?Cache ~/.bun/install/cache, not node_modules, key it on bun.lock, and install with --frozen-lockfile. Dagger does this with a cache volume, locally and in CI.
  42. How do I split Go integration tests across CI runners?Split the Go test packages into N shards, give each shard its own fresh Postgres, and run them in parallel. Dagger does it the same way locally and in CI.