Dashboard › publish › Distillation
1602022b-0cf1-49ef-a0dd-2881fe4b8e77["lore_tm_v1_bHmobLsVJLaF2f7A9IUjDC7f_yjEVbH-fT0lfmwHgWo","lore_tm_v1_a34gzGOM0ZBwQWUpb5i0qCgyJ2Mbm7yrU5MkMY4mYZw","lore_tm_v1_Q2cg3K4_2we13KtmDmJRkrwRMkZ_xfXMARYKT-FtxGA","lore_tm_v1_DH2ZjEtqyEB4rpTw95MaNEeOwyAwXR-uC25jPu_oZcY","lore_tm_v1_nlsPWrQdE-r9LGcEKlOVx2MtGKJwr-7iYWbrcPGg638"]
users/get-authenticated: OAuth app tokens and classic personal access tokens need read:user or broader user scope for a private-user response; unscoped tokens receive a public-user response while still authenticating as the token owner. Responses include 200, 304, 401, and 403; the endpoint is not enabled for GitHub Apps.ci-ready after checking CI; waiting-for-ci first removes any existing ci-ready, ensuring a fresh labeled event triggers .github/workflows/publish.yml..github/workflows/publish.yml job publish runs in the production environment only for an open issue’s ci-ready label event when accepted and ci-ready are present and ci-pending and ci-failed are absent; timeout is 90 minutes..github/workflows/publish.yml checks out publish code into .__publish__ with actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803, persist-credentials: false, and uses Node 24 with Yarn caching keyed by .__publish__/yarn.lock.src/publish/validate-approval-attestation.js with APPROVAL_ATTESTATION_AUTHOR=github-actions[bot] and REQUIRE_CI_READY_ATTESTATION=true; either failure removes accepted, posts Approval is invalid or could not be verified. Re-add the accepted label to retry after resolving the issue., and exits with failure..github/workflows/publish.yml parses inputs with src/publish/inputs.js; supported protected target-branch exceptions are sentry-migr8/tmp-merge-target, sentry-javascript/v10, sentry-javascript/v9, sentry-javascript/v8, sentry-javascript/v7, sentry-javascript/master, sentry-python/alpha, and sentry-wizard/1.x.actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1, SENTRY_RELEASE_BOT_CLIENT_ID, protected secret SENTRY_RELEASE_BOT_PRIVATE_KEY, and owner: getsentry; it checks out getsentry/${repo} into __repo__ with fetch-depth: 0.Set targets step renders {"published": ...} from CRAFT_PUBLISH_TARGETS_JSON and writes Craft state outside the target checkout under $GITHUB_WORKSPACE/.craft-state/craft; the state filename is publish-state-${owner_sanitised}-${repo_sanitised}-${cwd_hash}-${version_sanitised}.json, where cwd_hash is the first 12 characters of the SHA-1 of Craft’s canonical container working directory.docker://getsentry/craft@sha256:9a4a5d5efa44a00c2215078ead39800d4aaa5a97908b94f45a64d7d506d6e14b, runs craft publish <version> from __repo__/<path>, and sets XDG_STATE_HOME=/github/workspace/.craft-state so target-repository contents cannot pre-populate publish state..github/workflows/ci-poller.yml therefore checks out ${{ github.event.repository.default_branch }} with actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 and persist-credentials: false.ci-ready; .github/workflows/ci-poller.yml binds polling to the current accepted-label actor and event ID and revalidates after CI completes, after recording CI-ready proof, and immediately before adding ci-ready..github/workflows/ci-poller.yml runs every 5 minutes, on repository_dispatch type ci-poller, and after completion of Run CI Status Poller; the job runs when CI_POLLER_HAS_PENDING=true, for repository dispatch, or for a successful workflow run on the repository default branch.ci-status-poller with cancel-in-progress: false; repository-dispatch client_payload.attempt must match an integer from 0 through 59, otherwise it emits repository_dispatch attempt must be an integer from 0 through 59.check-suites, status, and check-run API calls; the latter is required because sentry-internal-app is absent from private repositories including sentry-xbox, sentry-playstation, sentry-switch, and service-registry.ci-pending and accepted; it uses src/publish/current-accepted-event.js to capture .actor and .eventId, then validates them with src/publish/validate-approval-attestation.js through EXPECTED_ACCEPTED_ACTOR and EXPECTED_ACCEPTED_EVENT_ID.ci-pending and accepted, posts Approval is invalid or could not be verified. Re-add the accepted label to retry after resolving the issue., and skips the issue.parsePublishTitle() from src/modules/details-from-context.js so CI inspection and publishing target the same repository/version; it extracts a 40-character commit SHA from the issue body’s commit/<SHA>/checks link..check_suites[0].head_branch from the issue commit and then resolves repos/${repo}/git/ref/heads/${branch}; if either lookup fails it falls back to the issue SHA, and if branch HEAD changed it updates the issue body’s check-runs link to the new SHA.success or no statuses exist, every check run is completed, and no completed check has a conclusion other than success, neutral, or skipped.ci-ready, the poller runs src/publish/record-ci-ready-attestation.js, verifies output begins with ci_ready_attestation=, and posts the proof as a comment using ${{ github.token }}; proof-generation, proof-posting, or subsequent validation failure removes ci-pending and accepted.ci-pending for ci-ready and comments CI checks passed for ${repo}@${version}. Publishing is starting now.action_required, stale, or startup_failure, the poller removes ci-pending and accepted, adds ci-failed, lists failed check names, links to check runs, and instructs the author to re-add accepted after fixing CI.failure, the poller removes ci-pending and accepted, adds ci-failed, and comments with failed/error status contexts and their target URLs where available.ci-pending and accepted, then uses a token created from CI_POLLER_APP_CLIENT_ID and protected secret CI_POLLER_APP_PRIVATE_KEY to set CI_POLLER_HAS_PENDING to exactly true or false.getsentry/craft@sha256:9a4a5d5efa44a00c2215078ead39800d4aaa5a97908b94f45a64d7d506d6e14b resolved successfully, while ghcr.io/getsentry/craft at the same digest was unavailable..github/workflows/auto-approve.yml, .github/workflows/ci-poller.yml, .github/workflows/cocoapods-keepalive.yml, .github/workflows/publish.yml, .github/workflows/test.yml, AGENTS.md, README.md, docs/key_rotation_vault_changes.md, docs/rfc.md, src/libs/__tests__/github.js, src/libs/github.js, src/modules/__tests__/details-from-context.js, src/modules/__tests__/update-issue.js, src/modules/details-from-context.js, src/modules/post-workflow-details.js, src/modules/process-end-state.js, src/modules/update-issue.js, src/publish/inputs.js, src/publish/post-result.js, src/publish/post-workflow-details.js, and src/publish/update-issue.js.