Learn
Guides to CI, testing, and builds, and where Dagger fits.
- migrationHow 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.
- how-toHow do I run Go tests, lint, and go generate the same way locally and in CI?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.
- how-toHow do I run Playwright tests against a Docker Compose app 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.
- comparisonHow does Dagger compare to Bazel?Bazel is a build system that caches fine-grained build actions. Dagger runs your existing tools, Bazel included, as cached checks in containers.
- comparisonHow does Dagger compare to Blacksmith?Blacksmith runs your GitHub Actions jobs on faster, cheaper runners. Dagger replaces the jobs with checks that run the same locally and in Dagger Cloud.
- comparisonHow does Dagger compare to Buildkite?Buildkite 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.
- how-toHow 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.
- how-toHow 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.
- how-toHow do I run Vitest in CI, with sharding and merged coverage?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.
- how-toHow do I cache Rust builds in CI without rebuilding everything?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.
- how-toHow 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.
- how-toHow 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.
- how-toHow do I run PSScriptAnalyzer on PowerShell scripts 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.
- how-toHow 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.
- how-toHow do I share the Go build cache across CI runs and runners?Persist GOCACHE and GOMODCACHE, key them safely, and share them across runners: setup-go, GitLab cache, GOCACHEPROG, or Dagger's Go module cache volumes.
- how-toHow do I run Jest in CI and split the tests with --shard?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.
- how-toHow do I run Biome lint and format checks 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.
- how-toHow do I run deno test, lint, fmt, and check in CI?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.
- how-toHow 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.
- how-toHow do I lint Helm charts and check rendered templates 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.
- how-toHow do I run Playwright tests in CI and locally in the same container, with cached browsers?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.
- how-toHow do I lint shell scripts with 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.
- how-toHow do I build Docker images and run Compose services the same way locally and 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.
- how-toHow do I run integration tests against real databases and Kafka without mocks?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.
- alternativesWhat are the alternatives to GitHub Actions, from faster runners to portable pipelines?Runner vendors such as Blacksmith run your workflows faster or cheaper. Buildkite and CircleCI replace GitHub Actions, and Dagger makes pipelines portable.
- explainerWhich 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.
- explainerWhat 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.
- explainerCan 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.