New to Kestra?
Use blueprints to kickstart your first workflows.
Run dbt ELT pipelines on Amazon Redshift from Git using Docker and Kestra. Execute dbt deps and dbt build to transform data in your Redshift warehouse.
Run your dbt transformations on an Amazon Redshift data warehouse straight from a version-controlled Git repository, with zero local setup. This blueprint clones a dbt project, resolves its dependencies, and executes dbt build inside a pinned Docker image, so the same dbt models, tests, and snapshots run identically across development, staging, and production. It solves the classic analytics engineering problem of "it works on my machine" by making every dbt run reproducible, isolated, and driven entirely from source control.
io.kestra.plugin.core.flow.WorkingDirectory task named git creates a shared working directory so the cloned repo and the dbt run happen in the same context.clone_repository (io.kestra.plugin.git.Clone) checks out the main branch of the dbt project from a Git URL.dbt 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-redshift:latest image, which already bundles dbt and the Redshift adapter.profiles block defines a redshift target, pointing at your cluster host, port 5439, database, and schema. Credentials are injected at runtime via {{ secret('REDSHIFT_USER') }} and {{ secret('REDSHIFT_PASSWORD') }}.dbt deps to install packages, then dbt build to run models, tests, snapshots, and seeds in dependency order.dbt's own CLI runs models, but it does not schedule, trigger, retry, or connect dbt to the rest of your pipeline. With Kestra you can fire this build from event triggers (a new file landing, an upstream load finishing, a webhook, or a cron schedule), add automatic retries on transient Redshift or network failures, capture full run logs and lineage, and chain dbt before or after ingestion and reverse-ETL steps. Everything stays in declarative, reviewable YAML stored in Git, filling the gap dbt Core's scheduler leaves open.
REDSHIFT_USER: the Redshift database user for the dbt connection.REDSHIFT_PASSWORD: the password for that Redshift user.REDSHIFT_USER and REDSHIFT_PASSWORD secrets to your Kestra instance.url in clone_repository to point at your own dbt project repository.profiles block: set host, dbname, and schema for your Redshift cluster.dbt deps and dbt build complete against Redshift.dbt build for dbt run, dbt test, or a targeted --select to control scope.io.kestra.plugin.core.trigger.Schedule trigger to run transformations on a cron cadence.latest for stricter reproducibility.