New to Kestra?
Use blueprints to kickstart your first workflows.
Catch broken SQLX before merge with Kestra. A webhook-triggered flow runs dataform compile on every pull request and posts a Discord verdict.
A SQLX file with a broken ref, a typo in a config block, or an invalid dependency compiles nowhere, but without a gate it still merges and breaks the next production run. Dataform ships the check for this: dataform compile fails whenever any definition in the project is invalid, without running a single BigQuery job. This blueprint wires that check into a webhook-triggered Kestra flow through io.kestra.plugin.dataform.cli.DataformCLI, so a pull request webhook or a CI step invokes the gate and Discord receives exactly one pass or fail verdict.
pr_webhook trigger (io.kestra.plugin.core.trigger.Webhook) starts the flow on demand, secured by a webhook key from a secret, so a Git provider webhook or a pipeline step can invoke the gate with one HTTP request.compile_check (io.kestra.plugin.dataform.cli.DataformCLI) loads the project from namespace files, runs dataform install in beforeCommands, then runs dataform compile with || compile_ok=0 so a broken project records a flag instead of failing the flow before the verdict.{{ outputs.compile_check.vars.compile_ok }}.verdict (io.kestra.plugin.core.flow.If) branches on the flag and posts exactly one Discord message, pass or fail.errors block posts a distinct alert if the gate itself crashes, so a silent gate never masquerades as a green one.Running dataform compile in scattered CI scripts means every repository re-implements the same step and the results vanish with the CI run. In Kestra, the gate is one flow with a stable webhook URL, every invocation is an execution with logs and structured outputs, and the same flow can grow richer steps, a dry run on success, a ticket on repeated failures, without touching any repository's pipeline definition.
GCP_SERVICE_ACCOUNT_JSON: the service account key JSON, delivered to the task as sa.json.DISCORD_WEBHOOK_URL: Discord incoming webhook URL.WEBHOOK_KEY: shared key that authorizes calls to the webhook trigger.GCP_SERVICE_ACCOUNT_JSON, DISCORD_WEBHOOK_URL, and WEBHOOK_KEY secrets to your Kestra namespace.io.kestra.plugin.git.Clone instead of relying on synced namespace files.