Dashboard › craft › Distillation
cc2fe733-695c-468c-9652-babde3c129c2["lore_tm_v1_ET4pp_NU9zZvExxqRntbFddKOkpj4ccnD8d-VpE4DTU","lore_tm_v1_2BJ5LUpWR162ALASG2iVdl22vxCWDs2Mz73n5svj02M"]
Date: Sep 8, 2026
getsentry/craft release.yml workflow is named Release, uses concurrency ${{ github.workflow }}-${{ github.ref }}, and supports both workflow_dispatch (own/dogfooding releases) and workflow_call (external repositories).workflow_dispatch inputs for Release: required version (“Version to release”) defaults to 'auto'; optional force (“Force a release even when there are release-blockers”); optional workspace (“Named Craft release workspace to prepare and publish”).workflow_call inputs for Release: optional version (semver, bump type, or "auto"); optional string force default 'false'; optional merge_target; optional blocker_label default 'release-blocker'; optional publish_repo; optional git_user_name; optional git_user_email; optional path default '.'; optional workspace; optional craft_config_from_merge_target default 'false'.workflow_call outputs from the release job: version, branch, sha, previous_tag, and changelog; each resolves from steps.craft-local.outputs.* or steps.craft-action.outputs.*.Release has build and release jobs. build runs only when github.repository == 'getsentry/craft', is named Build, calls ./.github/workflows/build.yml, and has contents: read permission.Release job requires build and runs when always() && (needs.build.result == 'success' || needs.build.result == 'skipped'); it runs on ubuntu-latest, is named 'Release a new version', and has contents: write permission.workflow_dispatch in getsentry/craft, Release obtains a release-bot token using actions/create-github-app-token@v3, with vars.SENTRY_RELEASE_BOT_CLIENT_ID and secrets.SENTRY_RELEASE_BOT_PRIVATE_KEY.Release checks out via actions/checkout@v6 with fetch-depth: 0 and token ${{ steps.token.outputs.token || github.token }}.getsentry/craft, Release dogfoods the local action in Prepare release (dogfooding): uses: ./, ID craft-local, GITHUB_TOKEN: ${{ steps.token.outputs.token }}, and inputs version: ${{ github.event.inputs.version }}, force: ${{ github.event.inputs.force }}, workspace: ${{ github.event.inputs.workspace }}.Release uses published getsentry/craft@v2 in Prepare release, ID craft-action, with GITHUB_TOKEN: ${{ github.token }} and passes version, force, merge_target, blocker_label, publish_repo, git_user_name, git_user_email, path, workspace, and craft_config_from_merge_target from workflow-call inputs.Release with version=auto, that it dogfoods the merged master action, and that it was dispatching the workflow; no dispatch result was shown.