New to Kestra?
Use blueprints to kickstart your first workflows.
Validate Liquibase changelogs in CI with Kestra. Run validate and update-testing-rollback against a disposable H2 database and post the verdict to Discord.
A changelog that applies but cannot roll back is a one-way door, and you usually discover it during the incident that needed the rollback. This blueprint closes that gap at review time: a webhook fired from your pull request pipeline runs liquibase validate to prove the changelog is well formed, then liquibase update-testing-rollback to prove every change set applies, rolls back, and re-applies cleanly. It all happens on a disposable H2 file database created inside the task's working directory, so the check needs no external infrastructure and leaves nothing behind. Discord gets the verdict either way.
ci_webhook (io.kestra.plugin.core.trigger.Webhook) starts the flow when your CI pipeline calls it on a pull request. Replace change-me-strong-webhook-key with a strong random value before use.test_changelog (io.kestra.plugin.liquibase.CLI) receives the changelog through inputFiles and targets jdbc:h2:file:./ci-db, an H2 file database that exists only inside this task run. The plugin image bundles the H2 driver, so no database server is involved.liquibase validate catches malformed changelogs first with a fast, clear error.liquibase update-testing-rollback then applies every change set, rolls all of them back, and applies them again, failing loudly if any change set lacks a working rollback.report_verdict posts the passing verdict to Discord, and the errors block posts the do-not-merge verdict when any step fails.You could script these two commands in CI, but then every repository re-implements the container image, the secret handling, the notification, and the log retention. As a Kestra flow, the check is one webhook call from any pipeline, the Liquibase environment is the plugin's maintained container image, every run is preserved in the execution history, and the verdict routing lives in one place instead of scattered CI configs.
DISCORD_WEBHOOK_URL: Discord incoming webhook URL.DISCORD_WEBHOOK_URL secret to your Kestra namespace.namespaceFiles synced from the repository branch instead of the inline demo changelog.