Skip to content

ref(core): Share the commit env var list used for release detection - #25478

Draft
mwarkentin wants to merge 1 commit into
developfrom
claude/share-commit-env-vars
Draft

mwarkentin wants to merge 1 commit into
developfrom
claude/share-commit-env-vars

Conversation

@mwarkentin

Copy link
Copy Markdown
Member

Follow-up to #25244, as suggested in review there.

The Node SDK, the Vercel Edge SDK and the bundler plugins each kept their own copy of the commit environment variables they read to detect a release, plus their own copy of the placeholder check added in #25244. The copies had already drifted: the bundler plugins did not read HEROKU_BUILD_COMMIT.

Changes

  • New packages/core/src/utils/commitEnv.ts, exported from @sentry/core/server:
    • one ordered list of commit env vars, with the same order and provider links as before;
    • readCommitEnvVar(name, onPlaceholder?) ignores a value that is its own name. By default it warns through consoleSandbox with the [Sentry] prefix;
    • getReleaseFromCommitEnv(onPlaceholder?) returns the first variable that is set. It reads in order and stops at the first match, so a placeholder is only reported when it would otherwise have become the release.
  • Node and Vercel Edge: getSentryRelease() keeps the SENTRY_RELEASE and injected-release checks, then calls getReleaseFromCommitEnv().
  • Bundler plugins: determineReleaseName() calls getReleaseFromCommitEnv(), then falls back to git rev-parse as before. It passes its own handler, which keeps the [@sentry/bundler-plugins] prefix and warns once per variable per build. readCommitEnvVar keeps its signature, so setCommits is unchanged.

Behaviour change: the bundler plugins now read HEROKU_BUILD_COMMIT, ahead of HEROKU_SLUG_COMMIT, as Node and Vercel Edge already do. Nothing else changes order or meaning.

Testing

  • New packages/core/test/lib/utils/commitEnv.test.ts covers:
    • order;
    • HEROKU_BUILD_COMMIT before HEROKU_SLUG_COMMIT;
    • skipping a placeholder;
    • no report for a placeholder after the variable that supplies the release;
    • reporting a placeholder once;
    • the default warning versus a custom handler.
  • A bundler-plugins test for HEROKU_BUILD_COMMIT.
  • The existing release-detection tests in Node (7), Vercel Edge (3) and the bundler plugins (74) pass unchanged.

Before submitting a pull request, please take a look at our
Contributing guidelines and verify:

  • If you've added code that should be tested, please add tests.
  • Ensure your code lints and the test suite passes (yarn lint) & (yarn test).
  • Link an issue if there is one related to your pull request. If no issue is linked, one will be auto-generated and linked.

Generated by Claude Code

The Node SDK, the Vercel Edge SDK and the bundler plugins each kept their
own copy of the commit environment variables they read to detect a
release, along with their own placeholder check. The copies had already
drifted: the bundler plugins did not read HEROKU_BUILD_COMMIT.

The list and the placeholder check now live in @sentry/core/server as
getReleaseFromCommitEnv() and readCommitEnvVar(). Node and Vercel Edge
keep their SENTRY_RELEASE and injected-release checks, and the bundler
plugins keep their git fallback and their own once-per-build warning.
The bundler plugins now also read HEROKU_BUILD_COMMIT.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WgDm3ijhQZQUHGAFFqQzKQ
@github-actions

Copy link
Copy Markdown
Contributor

size-limit report 📦

Path Size % Change Change
@sentry/browser 29.88 kB - -
@sentry/browser - with treeshaking flags 28.02 kB - -
@sentry/browser - with treeshaking flags tracing without tracing 27.92 kB - -
@sentry/browser (incl. Tracing) 52.07 kB - -
@sentry/browser (incl. Tracing + Span Streaming) 52.07 kB - -
@sentry/browser (incl. Tracing, Profiling) 55.02 kB - -
@sentry/browser (incl. Tracing, Replay) 91.82 kB - -
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 80.68 kB - -
@sentry/browser (incl. Tracing, Replay with Canvas) 96.55 kB - -
@sentry/browser (incl. Tracing, Replay, Feedback) 109.49 kB - -
@sentry/browser (incl. Feedback) 47.4 kB - -
@sentry/browser (incl. sendFeedback) 34.94 kB - -
@sentry/browser (incl. FeedbackAsync) 40.05 kB - -
@sentry/browser (incl. Metrics) 30.9 kB - -
@sentry/browser (incl. Logs) 31.18 kB - -
@sentry/browser (incl. Metrics & Logs) 31.81 kB - -
@sentry/react 31.7 kB - -
@sentry/react (incl. Tracing) 54.39 kB - -
@sentry/vue 38.04 kB - -
@sentry/vue (incl. Tracing) 55.01 kB - -
@sentry/svelte 29.9 kB - -
@sentry/remix (Remix 3 client bundle) 57.08 kB - -
CDN Bundle 31.64 kB - -
CDN Bundle (incl. Tracing) 52.58 kB - -
CDN Bundle (incl. Logs, Metrics) 33.84 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) 54.52 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) 74.77 kB - -
CDN Bundle (incl. Tracing, Replay) 90.25 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 92.18 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) 96.4 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 98.34 kB - -
CDN Bundle - uncompressed 93.18 kB - -
CDN Bundle (incl. Tracing) - uncompressed 156.03 kB - -
CDN Bundle (incl. Logs, Metrics) - uncompressed 99.72 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 161.99 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 229.76 kB - -
CDN Bundle (incl. Tracing, Replay) - uncompressed 276.2 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 282.14 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 289.9 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 295.84 kB - -
@sentry/nextjs (client) 56.8 kB - -
@sentry/sveltekit (client) 52.45 kB - -
@sentry/core/server 41.7 kB +1.41% +578 B 🔺
@sentry/core/browser 13.81 kB - -
@sentry/node 153.2 kB +0.08% +114 B 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection) 84.04 kB - -
@sentry/node - without tracing 94.95 kB +0.09% +78 B 🔺
@sentry/node - without channel injection 131.21 kB +0.05% +62 B 🔺
@sentry/aws-serverless 103.13 kB +0.09% +90 B 🔺
@sentry/cloudflare (withSentry) - minified 210.6 kB - -
@sentry/cloudflare (withSentry) 522.53 kB - -
@sentry/nextjs/cloudflare (withSentry) - minified 228.27 kB - -

View base workflow run

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants