New to Kestra?
Use blueprints to kickstart your first workflows.
Validate every release with Kestra. A CI webhook fires a Sifflet rule run on the affected data domain and posts the outcome to Discord after each deploy.
Code review and unit tests catch broken logic, but a transformation change that quietly halves a table sails through both. The regression usually surfaces the next morning, when the scheduled monitor finally runs and nobody remembers which deploy caused it. This blueprint closes that gap: the last step of your CI deploy job calls a Kestra webhook, io.kestra.plugin.sifflet.RunRule launches the rule guarding the affected data domain, and Discord shows the outcome right next to the release announcement, minutes after the merge.
on_deploy trigger (io.kestra.plugin.core.trigger.Webhook) exposes an HTTP endpoint guarded by a secret key. A curl step at the end of a GitHub Actions or GitLab CI deploy job fires the flow.validate_release (io.kestra.plugin.sifflet.RunRule) authenticates with the API key, targets your tenant through baseUrl, and launches a run of the rule named by the rule_id input, the monitor covering the models or tables the release touched.status, statusCode, ruleId, and the raw response; notify_channel posts the status to Discord so the validation lands in the same channel as the deploy.errors block posts a distinct alert when the validation fails to launch, telling the team to treat the deploy as unvalidated.Wiring CI to Sifflet directly means API keys in CI secrets, retry logic in shell, and results that vanish with the job log. Routing through Kestra keeps the Sifflet credentials in one namespace, gives the validation its own execution with logs and state, and lets the same flow serve every repository, each CI job just posts to the webhook. Changing which rule guards a domain is an input edit, not a CI change.
SIFFLET_API_KEY: Sifflet API bearer token used to run the rule.SIFFLET_BASE_URL: base URL of your Sifflet tenant API.DISCORD_WEBHOOK_URL: Discord incoming webhook URL.SIFFLET_RELEASE_WEBHOOK_KEY: secret key guarding the webhook endpoint.rule_id and confirm the Discord message arrives.ForEach, as shown in the Sifflet rule pack fan-out blueprint.retry on the rule task so a transient API blip does not mark a good release as unvalidated.