botcoder254/Workers Release Promoter

Promote Cloudflare Workers from GitHub Releases with staged rollout, smoke tests, rollback, and release annotations.

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Activelast commit May 1, 2026
License
MIT

Pinned Snippet

workflow.ymlSHA-pinned
uses: botcoder254/cloudflare-promoter@0c55dcf6b3fcc8d9756f13f5043717f4e8f8593f # v1.0.5

tags can be moved; commit SHAs can't. why a SHA?

namedescriptionrequireddefault
cloudflare-api-tokenCloudflare API token with Workers deployment permissions. Can also be set via CLOUDFLARE_API_TOKEN env var.no
cloudflare-account-idCloudflare account ID. Can also be set via CLOUDFLARE_ACCOUNT_ID env var.no
worker-nameName of the Cloudflare Worker to deploy. If omitted, resolved from wrangler config in working directory.no
working-directoryWorking directory for the Worker project (where wrangler config lives). Defaults to repository root.no.
environmentWrangler environment to deploy to (e.g., "production", "staging").noproduction
promotion-strategyPromotion strategy: "immediate" (deploy and promote to 100%), "gradual" (incremental rollout), or "staging-only" (deploy and verify without promoting to production).noimmediate
gradual-stepsComma-separated rollout percentages for gradual deployment (e.g., "10,50,100"). Only used when promotion-strategy is "gradual".no10,50,100
gradual-step-wait-secondsSeconds to wait between gradual rollout steps before verification.no5
post-step-smoke-testsWhether to run smoke tests after each gradual step (true/false).notrue
rollout-percentageDeprecated alias for gradual-steps. Comma-separated rollout percentages. Use "100" for immediate full rollout.no100
smoke-test-urlURL to hit for post-deploy smoke test. If omitted, smoke testing is skipped.no
smoke-test-pathsComma-separated additional paths to check relative to smoke-test-url (e.g., "/health,/api/status").no
smoke-test-expected-statusExpected HTTP status code from smoke test URL.no200
smoke-test-expected-body-containsString that the smoke test response body must contain.no
smoke-test-timeoutTimeout in milliseconds for each smoke test request.no10000
smoke-test-retriesNumber of retry attempts for each smoke check before failing.no3
smoke-test-retry-intervalInterval in milliseconds between smoke test retry attempts.no2000
smoke-test-deadlineTotal deadline in milliseconds for all smoke tests to complete.no120000
smoke-test-commandCustom shell command to run as an additional smoke test. Runs after fetch-based checks.no
smoke-test-requiredIf false, smoke test failures produce warnings but do not block promotion.notrue
auto-rollbackIf true (default), automatically rollback to the previous stable version on promotion failure. Set to false to disable automatic rollback.notrue
dry-runIf true, validate inputs and print the promotion plan without deploying.nofalse
github-tokenGitHub token for updating release notes and creating deployment statuses. Defaults to the automatic GITHUB_TOKEN.no${{ github.token }}
release-note-modeHow to update the GitHub Release deployment section: "append" adds a new block every run, "replace-section" keeps a single idempotent section.noreplace-section
deployment-section-headingMarkdown heading text used for the deployment section in the release body.noWorkers Production Promotion
namedescription
release-tagGit tag of the release that triggered this deployment.
release-idGitHub Release ID.
release-urlHTML URL of the GitHub Release page.
workflow-run-urlURL of the GitHub Actions workflow run that executed this deployment.
environmentTarget deployment environment.
promotion-strategyPromotion strategy requested by inputs (immediate, gradual, staging-only).
worker-nameCloudflare Worker name used for deployment.
deployment-idCloudflare deployment ID of the promoted version.
worker-version-idCloudflare Worker version ID that was deployed.
candidate-version-idCandidate Worker version ID (alias of worker-version-id for release-note clarity).
version-idBackward-compat alias for worker-version-id.
staging-urlStaging URL (workers.dev) of the deployed Worker.
production-urlProduction URL (custom domain) of the deployed Worker, if known.
deployment-urlBest available URL of the deployed Worker.
previous-stable-version-idVersion ID recorded as stable before this deployment started.
smoke-test-statusSmoke test outcome: "passed", "failed", or "skipped".
smoke-test-passedWhether smoke tests passed (true/false). Empty if skipped.
promotion-statusGranular promotion status: "success", "staging-only", "dry-run", "failed-no-rollback", "failed-rollback-succeeded", "failed-rollback-failed", or "failed-rollback-disabled".
promotion-resultAlias for promotion-status (backward compat).
rollback-triggeredWhether an automatic rollback was attempted (true/false).
rollback-version-idVersion ID that was rolled back to, if rollback occurred.
rollback-succeededWhether the rollback succeeded (true/false). Empty if no rollback attempted.
post-rollback-healthyWhether post-rollback health check passed (true/false). Empty if not checked.