dbt
dbt CI on GitHub Actions
dbt parses the entire project and re-runs unchanged models.
340 → 12
Models run
28m → 4m
Pipeline
dbt parses the entire project and re-runs unchanged models.
Why it happens
The dbt manifest is not persisted, so state-based selection cannot work.
What to change
- Cache target/manifest.json from the previous run and use state:modified selection
- Cache the dbt packages directory keyed on packages.yml
- Run tests only on modified models and their children
dbt on runnerhut
yaml
jobs: build: runs-on: runnerhut-4vcpu-ubuntu-2404 steps: - uses: actions/checkout@v4 - run: dbt deps - run: dbt build --select state:modified+ --state ./prod-manifestThe only runnerhut-specific line is `runs-on: runnerhut-4vcpu-ubuntu-2404`. Everything else is standard GitHub Actions — the same actions, the same secrets and the same permissions model you use today.
Your next build could be twice as fast, at half the price
Start free. Migrating away is the same one line, and we publish that diff too.
Related
Database migrationsEvery test run replays the full migration history from an empty database.CondaEnvironment solving takes longer than the analysis itself.SparkSpark jobs in CI spend most of their time on JVM startup and jar assembly.AirflowDAG import checks reinstall the full Airflow dependency set each run.