Skip to content
Home / Migrations / GitHub Actions (complex pipelines)Dagger

GitHub Actions (complex pipelines) Dagger

hard

Dagger lets you write CI pipelines in TypeScript/Go/Python that run identically locally and in CI. Eliminates YAML hell and 'works in CI but not locally'.

Estimated: 8-16h · 6 steps
Progress0%
Step 1: Install Dagger CLI
curl -L https://dl.dagger.io/dagger/install.sh | DAGGER_VERSION=0.11.0 sh
Step 2: Initialize Dagger module
dagger init --sdk typescript --name my-pipeline
Step 3: Convert pipeline steps

Translate GitHub Actions steps to Dagger Container API calls. docker pull → dag.container().from(). run: → .withExec(['...']).

import { dag } from '@dagger.io/dagger'
const ctr = dag.container().from('node:20').withDirectory('/src', dag.host().directory('.'))
Step 4: Run locally to test

Execute the pipeline locally before pushing. Same result as CI.

dagger call build
Step 5: Update GitHub Actions

Replace complex YAML steps with a single Dagger call. GitHub Actions just triggers Dagger.

- run: dagger call test --source=.
Step 6: Verify parity
Pipeline runs identically locally and in GitHub Actions. Build artifacts match.