New to Kestra?
Use blueprints to kickstart your first workflows.
Gate dbt Cloud production runs behind CI plus a human approval. Trigger the CI job, pause for sign-off, run production, and notify Slack.
Put a human approval gate in front of every dbt Cloud production run. This blueprint triggers your dbt Cloud CI job, waits for it to pass, pauses for a reviewer to sign off, and only then triggers the production transformation job, reporting the outcome to Slack. It solves the problem of unreviewed dbt models reaching production: instead of letting a scheduler fire prod blindly, you enforce a validate, review, promote sequence that combines automated CI checks with explicit human approval for sensitive data transformations.
io.kestra.plugin.core.trigger.Webhook trigger (on_promote_request) starts the flow when a release system posts to it, guarded by a key.run_ci_job uses io.kestra.plugin.dbt.cloud.TriggerRun with wait: true to run the dbt Cloud CI job from ci_job_id and block until it finishes.notify_approval posts to Slack via io.kestra.plugin.slack.notifications.SlackIncomingWebhook to tell the team CI passed and approval is needed.approve_production uses io.kestra.plugin.core.flow.Pause with pauseDuration set from the approval_timeout input to wait for a human to resume the execution.run_prod_job runs the dbt Cloud production job from prod_job_id, again with wait: true.notify posts a final Slack message confirming the production run completed.dbt Cloud's own scheduler can run jobs on a cron or on CI events, but it cannot pause mid-pipeline and block on a human approval before promoting to production. Kestra adds that gap: a declarative YAML flow with an event-driven Webhook trigger, a native Pause task for human approval, automatic retries, and full execution lineage across the CI run, the gate, and the prod run. You get one auditable execution instead of two disconnected dbt Cloud jobs.
DBT_CLOUD_ACCOUNT_ID: your dbt Cloud account ID.DBT_CLOUD_API_TOKEN: dbt Cloud API token used to trigger runs.DBT_CLOUD_WEBHOOK_KEY: key that guards the webhook trigger.SLACK_WEBHOOK_URL: Slack incoming webhook URL for notifications.ci_job_id and prod_job_id (and optionally override approval_timeout, default PT2H).approve_production Pause for a fully automated CI to prod path.