Dashboard › cli › Distillation
cc3782df-59fc-46aa-b4e0-ac07bc10f925["lore_tm_v1_8JhcA73KmFfftTXGVE5px9L1NBMgG6E1gcObwYvXgao","lore_tm_v1_nL396HNfXBeJnA8gfezQSpz9tXmd79u3G2RUeA6T_eY","lore_tm_v1_6Ciui6IPioxjGZWLYNmnjF7ZE1d2dokFfVgRcac5_Gw","lore_tm_v1_GK7MQDKdHTzlMPn_VJqI86lEE-I2xbrtLSJnlnHQIfY","lore_tm_v1_8Of-07Pfjcv7W_dn9IyoV79wPxmGjV2DabQKhdNs9WM","lore_tm_v1_Ex_Myg_U35zaeC8zHlppeyT4HGRr-eSVABAiqg0s4XY","lore_tm_v1_a7F0I8d-XKxazz33s0R9CEHqbY8Myi6XwwWcm0wz57I","lore_tm_v1_NDl9e5YUefZgnLjt9-T2g3mKS6Y97qntBC_1yCPh9K4","lore_tm_v1_Mmse_25Q1UPmlmGSQrOo7lPvy10_xaY2ct0w03usOO0","lore_tm_v1_1JjaU7jL632loHC2CvAqG0Tor_djjv-k9E6VPfFcXb0","lore_tm_v1_QQuaTf3ZAlMi1FkOa4IPEqYPILk2TJk4odC_JKnlNQ8","lore_tm_v1_klbTwRGpz7fCc4UxXglgLR6TwE7YFUWUJFdmmF0yV3w","lore_tm_v1_90VkfKTmQmusoe16F5wxcgur476rHtvkINo9PA9khok","lore_tm_v1_05qYxH14dDkGwYW6LBL78TT3j1VbB5_OAgCKQ2RlY2M","lore_tm_v1_lSZATWSiwKKHOAIAoGGx6E_p5Gf9UrxirH930sqBGJE","lore_tm_v1_8ijLWPrTKddljaCgMIHjqwBKTpR3pnEyrghfIyss-Xg","lore_tm_v1_U-3WRJ87h-d1QrA_rG0UrlTnfRT7Aywuzit4yjmgYKo","lore_tm_v1_SaFEF_YKC0QnbIOhsurvsunkkAYhKadusBalVE3nl4I"]
.github/workflows/ci.yml runs on pushes to main and release/**, all pull requests, and workflow_call; concurrency is ci-${{ github.ref }} with cancel-in-progress: true, and workflow permissions are contents: read, issues: write, and packages: write..github/workflows/ci.yml defines workflow-level COMMIT_TIMESTAMP: ${{ github.event.head_commit.timestamp }}, SENTRY_CLIENT_ID: ${{ vars.SENTRY_CLIENT_ID || 'ci-fork-pr-dummy' }}, and UV_USE_IO_URING: "0"; the dummy client ID supports fork-PR smoke tests, while disabling io_uring avoids GitHub Actions runner SIGABRT failures associated with actions/runner-images#13602..github/workflows/ci.yml pins NODE_VERSION_20: "20.20.2", NODE_VERSION_22: "22.23.1", and NODE_VERSION_24: "24.18.0" as the single source of truth for actions/setup-node; Node 24.17.0 and 22.23.0 have the false ERR_STREAM_PREMATURE_CLOSE keep-alive fetch regression fixed in 24.18.0 and 22.23.1 (nodejs/node#64004).>= 18, and versions below 22.15 lack node:sqlite, so they fall back to the bundled node-sqlite3-wasm driver.changes job uses dorny/paths-filter@v4 and forces skill, code, and codemod outputs true on release/**; PRs build linux-x64 on ubuntu-latest and native darwin-arm64 on macos-latest, while main, release/**, and workflow_call build darwin-arm64, darwin-x64, linux-x64, linux-arm64, and windows-x64.darwin-arm64 CI builds compile and exercise the CoreUI-based Assets.car pixel extractor and provide V8 code cache for approximately 15% faster startup; all targets except darwin-arm64 cross-compile from ubuntu-latest via fossilize.changes job computes a nightly version only for a push to refs/heads/main: it converts COMMIT_TIMESTAMP to epoch seconds and replaces the package version suffix matching -dev\.[0-9]*$ with -dev.${TS}.codemod-test runs npx codemod@1.12.7 jssg test -l typescript ./scripts/codemod.ts in codemods/sentry-v3-to-v4; fixtures live under codemods/sentry-v3-to-v4/tests/<case>/.check-generated, same-repository PRs use an app token to check out the branch head for pushing regenerated docs; fork PRs leave ref empty, causing checkout of the pull-request merge SHA, which is always fetchable from the base repo with github.token.check-generated runs pnpm run generate:schema, pnpm run generate:docs, and pnpm run check:fragments; it checks generated skill files under packages/cli/plugins/sentry-cli/skills/sentry-cli/ and generated docs in packages/cli/README.md, packages/cli/DEVELOPMENT.md, apps/cli-docs/src/content/docs/contributing.md, apps/cli-docs/src/content/docs/self-hosted.md, and apps/cli-docs/src/content/docs/getting-started.mdx.github-actions[bot] <github-actions[bot]@users.noreply.github.com> with message chore: regenerate docs and pushes; fork PRs without the token instead fail with Generated files are out of date. Run 'pnpm run generate:docs' locally and commit the result.lint job uses Node ${{ env.NODE_VERSION_22 }} and runs pnpm run generate:schema, pnpm run lint, pnpm run typecheck, pnpm run check:deps, pnpm run check:errors, pnpm run check:patches, and pnpm run check:stale-refs.test-unit job uses Node ${{ env.NODE_VERSION_24 }}, runs pnpm run generate:schema and pnpm run test:unit, then submits ./coverage/lcov.info through getsentry/coverage-action@main; informational-patch is true for push events.fetchLatestFromGitHub() tests establish that GitHub release tag_name values "v1.2.3" and "v0.5.0" are returned as "1.2.3" and "0.5.0", while an unprefixed "1.0.0" remains "1.0.0".fetchLatestFromGitHub() throws UpgradeError with Failed to fetch from GitHub: 404 for an HTTP 404, Failed to connect to GitHub: fetch failed for a network TypeError("fetch failed"), and No version found in GitHub release when the JSON response lacks tag_name.apps/cli-docs/public/install is a symbolic link to ../../../packages/cli/install; its resolved repository target is packages/cli/install.GHCR_REPO is exactly "getsentry/cli" in packages/cli/src/lib/ghcr.ts; token, manifest, blob, and paginated tag-list URLs consistently use that repository, and packages/cli/src/lib/delta-upgrade.ts imports the named constant to maintain a single source of truth.fetchWithUpgradeError(url, init, serviceName) in packages/cli/src/lib/binary.ts calls customFetch, rethrows AbortError unchanged, converts TLS certificate failures to UpgradeError("network_error", buildTlsErrorDetail(error)), and maps other connection failures to UpgradeError("network_error", \Failed to connect to ${serviceName}: ${stringifyUnknown(error)}`)`.getBinaryDownloadUrl("1.0.0") builds a URL beginning https://github.com/getsentry/cli/releases/download/, uses the version without a v prefix, includes a sentry- artifact name, and selects arm64 only when process.arch === "arm64", otherwise x64.buildKnownCurlPaths("/home/user", env) appends one trailing platform sep to every known directory, including /home/user/.local/bin, /home/user/.sentry/bin, and an absolute XDG_BIN_HOME.XDG_BIN_HOME is normalized away before the canonical separator is appended: paths must end with a single separator, never a double sep, because a double separator would break process.execPath.startsWith() directory-boundary checks.buildChangelogSummary() in packages/cli/src/lib/release-notes.ts strips only a leading v using VERSION_PREFIX_RE = /^v/, includes releases where compareVersions(version, fromVersion) === 1 and compareVersions(version, toVersion) <= 0, returns null for no in-range releases, and otherwise merges sections by category before applying optional maxItems.