New to Kestra?
Use blueprints to kickstart your first workflows.
Release Kestra flows from Git with a dry-run diff, approval before deletions, smoke tests and an automatic, verified rollback to the previous flows.
A Git sync replaces the running flows in one step, and nothing checks that the new revisions still work. This blueprint treats a release as a transaction: it snapshots the namespace, previews the change, deploys it, runs smoke-test flows, and restores the exact previous flows if any of them fails.
release_webhook trigger after a merge, or an operator runs the flow with a branch and a target namespace.check_target refuses a target namespace that contains this deployer flow.snapshot_ids and snapshot record the namespace's flows and sources with the Kestra plugin. This is the rollback point.preview runs SyncFlows as a dry run, and plan counts added, updated and deleted flows. With no change, nothing is deployed.approval pauses for up to 4 hours when the release deletes flows, or always with require_approval. Without a resume the release is cancelled.deploy applies the sync and smoke_tests runs each flow of smoke_test_flows as a subflow that must succeed.errors branch re-imports the snapshot, deletes only the flows the release added, asserts the namespace matches the snapshot and reruns the previous smoke tests. The execution still ends in FAILED.Pause is an approval gate that times out safely instead of blocking a CI runner.git_directory holds the target namespace's flows, including smoke-test flows with task timeouts.KESTRA_USERNAME and KESTRA_PASSWORD: Kestra API user that snapshots, syncs, restores and lists flows.GIT_USERNAME and GIT_ACCESS_TOKEN: read access to the repository.DEPLOY_WEBHOOK_KEY: key CI uses in the webhook URL.company.platform namespace.plan output and the smoke-test subflows.POST {kestra_url}/api/v1/main/executions/webhook/company.platform/kestra-gitops-deploy-smoke-test-rollback/{key}.errors branch.SyncNamespaceFiles when flows depend on namespace files.