Dashboard › craft › Distillation
fd1b387c-e972-4f92-97d9-6ad8d3b7d595["227908dd62dc6fd27be9c8c6dc31ebc7","26ecdcd4052f50d4ca6d337bbc49b09c"]
Date: Aug 3, 2026
ci-ready after checking CI; the publish workflow must therefore trigger only on a fresh ci-ready labeled event, not directly on accepted.productionBranch is the Cloudflare environment selector, distinct from Craft’s git release branch.${CLOUDFLARE_API_TOKEN} must be rejected before being passed to Wrangler.Publish workflow listens to issues.labeled, uses issue-title concurrency groups with cancel-in-progress: false, and grants contents: read, issues: write, and packages: write.waiting-for-ci job runs on ubuntu-latest in the production environment only when an open issue receives the accepted label and its title starts with publish: . It obtains a GitHub App token via actions/create-github-app-token@v3, using vars.SENTRY_INTERNAL_APP_ID and secrets.SENTRY_INTERNAL_APP_PRIVATE_KEY.ci-failed and ci-ready, then adding ci-pending; it enables the poller with CI_POLLER_HAS_PENDING=true, comments on the issue, and triggers the poller immediately rather than waiting for the next cron tick.publish job runs on ubuntu-latest in the production environment with a 90-minute timeout and requires an open issue event where the label is ci-ready, labels include both accepted and ci-ready, and labels exclude ci-pending and ci-failed.SENTRY_DSN to https://303a687befb64dc2b40ce4c96de507c5@o1.ingest.sentry.io/6183838 and checks out repository contents with actions/checkout@v6 into .__publish__.CloudflareTargetConfig defines deployType ("worker" or "pages"), optional Pages projectName, optional productionBranch, required wranglerCliPath, optional workingDir, and optional accountId.projectName is required when deployType is pages; productionBranch is passed to wrangler pages deploy --branch and must exactly match the server-side production branch, because a mismatch silently deploys to preview.productionBranch is omitted, the target reads the project’s production branch from the Cloudflare API so the release deploys to production; accountId is an identifier rather than a secret and is forwarded to Wrangler when set.projectName, productionBranch, or workingDir when a string matches ENV_EXPANSION_REGEX, preventing spawnProcess() from expanding config values against an environment containing CLOUDFLARE_API_TOKEN or CLOUDFLARE_ACCOUNT_ID.production_branch matching ENV_EXPANSION_REGEX as suspicious, logs a warning, omits --branch, and relies on Wrangler’s production default; a normal branch is logged and returned, while a missing branch also omits --branch with a warning.publish repository, exact Cloudflare worker permissions, and verification of the Wrangler version used by the Docker package as remaining work.Account → Cloudflare Pages → Edit from Worker deployment permission Account → Workers Scripts → Edit; additional Wrangler read-call scopes were still being verified.