New to Kestra?
Use blueprints to kickstart your first workflows.
Run dbt Core CI builds and tests, pause for human approval, then promote to the production target. Orchestrate dbt Core deployments with Kestra.
Promote a dbt Core build to production behind a human approval gate. This blueprint runs dbt build against your CI target, tests the models, then pauses the execution until someone signs off before running dbt build against the production target. Because the approval sits between the two builds, production models are only refreshed after CI tests pass and a reviewer approves, giving data teams a safe, auditable promotion path for analytics engineering pipelines without relying on manual deploy scripts.
build_ci task (io.kestra.plugin.dbt.cli.DbtCLI) runs on a Docker task runner using the ghcr.io/kestra-io/dbt-duckdb image. With namespaceFiles enabled, it loads your dbt project, runs dbt deps, then dbt build --target ci to compile, run, and test models against the CI target.notify_approval task (io.kestra.plugin.telegram.TelegramSend) posts a message to your Telegram channel announcing that CI passed and the production build is paused for review, including the {{ execution.id }}.approve_production task (io.kestra.plugin.core.flow.Pause) halts the execution for up to {{ inputs.approval_timeout }} (default PT2H), waiting for a human to resume it.build_production task runs dbt build --target prod, refreshing production models.Schedule trigger (scheduled_build, cron 0 2 * * *) is included so you can run the pipeline on a nightly cadence.dbt run scripts to governed, observable promotions.dbt Core ships a transformation engine but no scheduler, no approval workflow, and no event triggers. Kestra adds the missing orchestration layer: declarative YAML pipelines, event and schedule triggers, automatic retries, and full execution lineage across every run. The Pause task gives you a native human-in-the-loop gate that dbt Core simply cannot express on its own, and namespace files keep your dbt project versioned alongside the flow.
ci and prod targets defined in profiles.yml, uploaded as namespace files (warehouse credentials live in the dbt profile, so no extra Kestra secret is needed for the build itself).TELEGRAM_TOKEN: Telegram Bot API token used for the approval notification.TELEGRAM_CHANNEL: Telegram chat or channel ID to notify.ci and prod targets) to the namespace as namespace files.TELEGRAM_TOKEN and TELEGRAM_CHANNEL secrets.scheduled_build Schedule trigger for a nightly cadence.Schedule trigger with a GitHub webhook to promote on merged pull requests.dbt-duckdb image for your warehouse image (Snowflake, BigQuery, Postgres) and adjust profiles.yml.