New to Kestra?
Use blueprints to kickstart your first workflows.
Orchestrate dbt Core transformations on DuckDB from a Git repository with Kestra. Clone, build, and materialize analytics models with no warehouse or credentials.
Run dbt Core transformations on DuckDB directly from a Git repository for fast, reproducible, and fully version-controlled analytics ELT. This blueprint clones a dbt project, executes dbt deps and dbt build inside a lightweight DuckDB container, and materializes models in an in-memory DuckDB database. It solves a common pain point: standing up dbt against a cloud warehouse just to test models, run CI, or prototype, when all you need is Git and Docker.
io.kestra.plugin.core.flow.WorkingDirectory task named dbt creates a shared workspace so the clone and the dbt run operate on the same files.clone_repository task (io.kestra.plugin.git.Clone) pulls the main branch of the example dbt project from GitHub into that working directory.dbt_build task (io.kestra.plugin.dbt.cli.DbtCLI) runs on a Docker task runner (io.kestra.plugin.scripts.runner.docker.Docker) using the ghcr.io/kestra-io/dbt-duckdb:latest image.dbt deps to resolve packages, then dbt build to compile, run, and test models against DuckDB.profiles block points dbt at a duckdb target with path: ":memory:", so models materialize in-memory with no external database.dbt's own scheduler is limited to time-based runs and cannot react to upstream events. With Kestra you add event triggers (a new commit, an arriving file, an API call), automatic retries, run-level lineage and logs, and a declarative YAML definition that lives in Git alongside your dbt project. The Docker task runner pins the exact runtime, so the same flow is portable across environments.
This blueprint uses no secrets. The example repository is public and DuckDB runs in-memory. Add secrets only when you point it at a private repo or a real warehouse, for example a Git token via {{ secret('GITHUB_TOKEN') }}.
dbt_build for the manifest and run results.url in clone_repository for your own dbt project.duckdb path to a persisted file to keep results between runs.