Skip to content

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

  1. Cache target/manifest.json from the previous run and use state:modified selection
  2. Cache the dbt packages directory keyed on packages.yml
  3. 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-manifest
A working starting point

The 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.