New to Kestra?
Use blueprints to kickstart your first workflows.
Run a dbt ELT pipeline on DuckDB straight from a Git repo in one Docker container with Kestra. Execute dbt deps and dbt build, no warehouse needed.
Run a complete dbt ELT pipeline on DuckDB straight from a Git repository, inside a single Docker container, with no cloud data warehouse to provision. This blueprint clones a versioned dbt project, installs its package dependencies, and executes a full dbt build against an in-memory DuckDB database. It solves the classic dbt operating problem: dbt transforms data well but has no native scheduler, retry logic, or dependency orchestration, so teams end up wiring cron jobs and shell scripts around it. Here Kestra handles the orchestration declaratively while dbt and DuckDB do the modeling and compute.
The flow runs everything inside a single io.kestra.plugin.core.flow.WorkingDirectory task so all steps share one filesystem and one container session:
clone_repository uses io.kestra.plugin.git.Clone to check out the main branch of the kestra-io/dbt-demo repository into the working directory.dbt_core uses io.kestra.plugin.dbt.cli.DbtCLI with a Docker taskRunner (io.kestra.plugin.scripts.runner.docker.Docker) and the ghcr.io/kestra-io/dbt-duckdb:latest image. An inputFiles entry injects packages.yml (pulling in dbt_artifacts 2.10.1), and an inline profiles block defines a DuckDB target using an in-memory path with the parquet extension.dbt deps to install packages, then dbt build to compile, run, test, and materialize all models in one pass.dbt_artifacts package for downstream lineagedbt's own CLI cannot schedule itself, retry failed steps, react to events, or coordinate with upstream and downstream tasks. Kestra adds event and schedule triggers, automatic retries, full execution lineage, and declarative YAML you can version alongside the dbt project itself. You get one place to see when the build ran, why it failed, and what depended on it, instead of stitching that together from cron logs.
ghcr.io/kestra-io/dbt-duckdb:latest)kestra-io/dbt-demo repositoryThis blueprint clones a public repository and runs DuckDB in memory, so no Kestra secrets are required. If you point clone_repository at a private repo, add a credential such as {{ secret('GITHUB_TOKEN') }}.
clone_repository then dbt_core in the Gantt and Logs views.dbt deps and dbt build output in the task logs.clone_repository at your own dbt project and branch.profiles block and image.Schedule or Webhook trigger to run the build on a cadence or on push.dbt test or dbt source freshness commands, or split into separate tasks with retries.:memory: for durable results.