From 84562b1d4944d0fda94903dabc07c72c4e9ecf06 Mon Sep 17 00:00:00 2001 From: Steven Eubank <47563310+smeubank@users.noreply.github.com> Date: Wed, 4 Jan 2023 08:10:28 -0600 Subject: [PATCH 1/8] Update index.mdx --- src/docs/sdk/event-payloads/index.mdx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/docs/sdk/event-payloads/index.mdx b/src/docs/sdk/event-payloads/index.mdx index c6efe72121..c7d32080bb 100644 --- a/src/docs/sdk/event-payloads/index.mdx +++ b/src/docs/sdk/event-payloads/index.mdx @@ -159,6 +159,10 @@ For example, in a web app, this might be the route name. This value can be the git SHA for the given project, or a product identifier with a semantic version (suggested format `my-project-name@1.0.0`). +It is suggested to attempt to automatically detect the release environment, +and set it automatically for the user. +Further inforomation about platform specific attempts here. + ```json { "release": "my-project-name@1.0.0" From 3105fdb4c8a6b982ced5f223f09620e3ffcf1c13 Mon Sep 17 00:00:00 2001 From: Steven Eubank <47563310+smeubank@users.noreply.github.com> Date: Wed, 4 Jan 2023 08:33:27 -0600 Subject: [PATCH 2/8] Create release.mdx --- src/docs/sdk/event-payloads/release.mdx | 45 +++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/docs/sdk/event-payloads/release.mdx diff --git a/src/docs/sdk/event-payloads/release.mdx b/src/docs/sdk/event-payloads/release.mdx new file mode 100644 index 0000000000..6cc7c9487c --- /dev/null +++ b/src/docs/sdk/event-payloads/release.mdx @@ -0,0 +1,45 @@ +--- +title: Detect Release Automatically +--- + + + Should we call special attention to something to encourage best practices and prevent and bad DX? + + + +## Release + + +```json +{ + "release": "my-project-name@1.0.0" +} +``` + +```json +{ + "release": "721e41770371db95eee98ca2707686226b993eda" +} +``` + +## SDK Examples + +| Source | Description |
Examples
| +| ------------- | ------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | +| Python SDK | -SENTRY_RELEASE env variable - Output of git rev-parse HEAD | | +| Rust SDK | | | +| Browser SDK | | | +| Node SDK | | | +| Dart/Flutter | | | +| Java/Android | | | +| Cocoa/Apple | | | +| React Native | | | +| Unity | | | +| Unreal Engine | | | +| Capacitor | | | +| Cordova | | | +| UXamarin | | | +| PHP | | | +| Ruby | | | +| Golang | | | +| .NET | | | From 944bd203288817c4f5525ae5893205747d045e48 Mon Sep 17 00:00:00 2001 From: Steven Eubank <47563310+smeubank@users.noreply.github.com> Date: Wed, 4 Jan 2023 08:41:32 -0600 Subject: [PATCH 3/8] Update sidebar.tsx --- src/components/sidebar.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/sidebar.tsx b/src/components/sidebar.tsx index 2787746f2b..02bddf9ff0 100644 --- a/src/components/sidebar.tsx +++ b/src/components/sidebar.tsx @@ -197,6 +197,7 @@ export default () => { Exception Interface Message Interface + Release Detection Request Interface SDK Interface From d44aa957ada4e4c69b448aa32a2bc62ef6e708a5 Mon Sep 17 00:00:00 2001 From: Steven Eubank <47563310+smeubank@users.noreply.github.com> Date: Wed, 4 Jan 2023 09:02:17 -0600 Subject: [PATCH 4/8] Update release.mdx --- src/docs/sdk/event-payloads/release.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/docs/sdk/event-payloads/release.mdx b/src/docs/sdk/event-payloads/release.mdx index 6cc7c9487c..d1720cca4e 100644 --- a/src/docs/sdk/event-payloads/release.mdx +++ b/src/docs/sdk/event-payloads/release.mdx @@ -26,7 +26,7 @@ title: Detect Release Automatically | Source | Description |
Examples
| | ------------- | ------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | -| Python SDK | -SENTRY_RELEASE env variable - Output of git rev-parse HEAD | | +| Python SDK | -SENTRY_RELEASE env variable
- Output of git rev-parse HEAD | | | Rust SDK | | | | Browser SDK | | | | Node SDK | | | From e4bb06bc7548c80a7a801be292197e8aee15d70a Mon Sep 17 00:00:00 2001 From: Steven Eubank <47563310+smeubank@users.noreply.github.com> Date: Wed, 4 Jan 2023 14:52:27 -0600 Subject: [PATCH 5/8] Update src/docs/sdk/event-payloads/release.mdx Co-authored-by: Bruno Garcia --- src/docs/sdk/event-payloads/release.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/docs/sdk/event-payloads/release.mdx b/src/docs/sdk/event-payloads/release.mdx index d1720cca4e..42ad3b0995 100644 --- a/src/docs/sdk/event-payloads/release.mdx +++ b/src/docs/sdk/event-payloads/release.mdx @@ -38,7 +38,7 @@ title: Detect Release Automatically | Unreal Engine | | | | Capacitor | | | | Cordova | | | -| UXamarin | | | +| Xamarin | | | | PHP | | | | Ruby | | | | Golang | | | From b74778c4f743cf2e9357e9119551789e59714f93 Mon Sep 17 00:00:00 2001 From: Steven Eubank <47563310+smeubank@users.noreply.github.com> Date: Thu, 5 Jan 2023 07:09:45 -0600 Subject: [PATCH 6/8] Update src/docs/sdk/event-payloads/index.mdx Co-authored-by: Bruno Garcia --- src/docs/sdk/event-payloads/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/docs/sdk/event-payloads/index.mdx b/src/docs/sdk/event-payloads/index.mdx index c7d32080bb..c07625c2fc 100644 --- a/src/docs/sdk/event-payloads/index.mdx +++ b/src/docs/sdk/event-payloads/index.mdx @@ -161,7 +161,7 @@ with a semantic version (suggested format `my-project-name@1.0.0`). It is suggested to attempt to automatically detect the release environment, and set it automatically for the user. -Further inforomation about platform specific attempts here. +Further information about platform specific attempts here. ```json { From 4060e946274a541bafb55bfd1cc75e0e25799f0c Mon Sep 17 00:00:00 2001 From: Steven Eubank <47563310+smeubank@users.noreply.github.com> Date: Thu, 5 Jan 2023 07:48:54 -0600 Subject: [PATCH 7/8] Update release.mdx --- src/docs/sdk/event-payloads/release.mdx | 51 ++++++++++++++++--------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/src/docs/sdk/event-payloads/release.mdx b/src/docs/sdk/event-payloads/release.mdx index 42ad3b0995..790d2ca6f3 100644 --- a/src/docs/sdk/event-payloads/release.mdx +++ b/src/docs/sdk/event-payloads/release.mdx @@ -24,22 +24,35 @@ title: Detect Release Automatically ## SDK Examples -| Source | Description |
Examples
| -| ------------- | ------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | -| Python SDK | -SENTRY_RELEASE env variable
- Output of git rev-parse HEAD | | -| Rust SDK | | | -| Browser SDK | | | -| Node SDK | | | -| Dart/Flutter | | | -| Java/Android | | | -| Cocoa/Apple | | | -| React Native | | | -| Unity | | | -| Unreal Engine | | | -| Capacitor | | | -| Cordova | | | -| Xamarin | | | -| PHP | | | -| Ruby | | | -| Golang | | | -| .NET | | | +| Source | Description | +| ------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| Python SDK | -`SENTRY_RELEASE` env variable
- Output of git rev-parse HEAD | +| Rust SDK | -`SENTRY_RELEASE` env if nothing was explicitly sent. & example snippets include release: sentry::release_name!() | +| Browser SDK | 1. the `SENTRY_RELEASE` global var injected by bundlers (like webpack plugin): link
2. and then falls back to undefined | +| Node SDK | 1. release parameter
2. SENTRY_RELEASE env var
3. SENTRY_RELEASE.id global var
- variety of `env variables`
4. and then falls back to undefined | +| Dart/Flutter | - `SENTRY_RELEASE` environment variable- `-dart-define=SENTRY_RELEASE` dart define variable
- SDK init `options.release`
By default, it uses the `appId@appVersion+buildNumber` whenever possible/available. | +| Java | - SDK init options
- sentry.properties file
- defaults to git `commit_id` for spring-boot | +| Android(Java) | - SDK init options
- AndroidManifest.xml `io.sentry.release` metadata
- By default, it uses the `appId@appVersion+buildNumber` | +| Cocoa/Apple | The SDK sets the default, which is `CFBundleIdentifier@CFBundleShortVersionString+CFBundleVersion`, on the init of the Options. An example is `io.sentry.sample.iOS-Swift@7.31.2+1`| +| React Native | - SDK init options (overrides platform defaults)
iOS:
- platform default
Android:
- platform default
- `SENTRY_RELEASE` environment variable only source maps upload | +| Unity | SDK defaults to `$"{productName}@{application.Version}"+{application.BuildGUID}"` on initializing `SentryUnityOptions` | +| Capacitor | Same rules as Browser, otherwise fetch from the native SDK
iOS
- id as `CFBundleIdentifier`
- version as `CFBundleShortVersionString`
- build as `CFBundleVersion`
Android:
- id as `packageName`
- version as `versionName`
- build as `versionCode` | +| Cordova | gets from `SENTRY_RELEASE`, or it's set by Sentry CLI from the command `sentry-cli releases propose-version` during build (the hash from the last commit) | +| Xamarin | `PackageName@VersionString+BuildString`
`PackageName`: the application package name for Android/iOS and the application GUID for UWP.
`VersionString`: `versionName` on Android, `CFBundleVersion` on iOS, Assembly version on UWP.
`BuildString`: `versionCode` on Android, `CFBundleShortVersionString` on iOS. | +| PHP | in order of precedence:
PHP/Laravel/Symfony
- `options.release`
- `SENTRY_RELEASE` | +| Ruby | in order of precedence:
- `config.release`
- `ENV[’SENTRY_RELEASE’]`
- `git rev-parse —short HEAD` if .git present
- capistrano `REVISION` file or from `revisions.log`
- `ENV['HEROKU_SLUG_COMMIT']` if on heroku
- nil otherwise | +| Golang | in order of precedence:
- `options.Release`
- various env vars
`"SENTRY_RELEASE"`
`"HEROKU_SLUG_COMMIT"`
`"SOURCE_VERSION"`
`"CODEBUILD_RESOLVED_SOURCE_VERSION"`
`"CIRCLE_SHA1"`
`"GAE_DEPLOYMENT_ID"`
`"GITHUB_SHA"`
`"COMMIT_REF"`
`"VERCEL_GIT_COMMIT_SHA"`
`"ZEIT_GITHUB_COMMIT_SHA"`
`"ZEIT_GITLAB_COMMIT_SHA"`
`"ZEIT_BITBUCKET_COMMIT_SHA"`
- `git describe --long --always --dirty` | +| .NET | In order of precedence: +
- The `release` configuration option if set +
- The `SENTRY_RELEASE` env var if set +
- `"{AssemblyName}@{AssemblyInformationalVersion}"` based on the entry assembly, when an informational version attribute is present (commonly set by csproj `` tag in modern .NET) +
- `"{AssemblyName}@{AssemblyVersion}"` based on the entry assembly, using the full assembly version (usually in older .NET Framework) +
+
Varies slightly for mobile. +
On .NET Android: +
- The `release` configuration option if set +
- `"{PackageName}@{PackageVersion}+{PackageVersionCode}"` from the Android package. (Should matche `appId@appVersion+buildNumber` from the Android SDK.) +
+
On .NET for iOS/MacCatalyst: +
- The Release configuration option if set +
- `"{CFBundleIdentifier}@{CFBundleShortVersionString}+{CFBundleVersion}"` which matches the iOS SDK. | From 38feb8d804788ac2688a2a084b8b56349133ef21 Mon Sep 17 00:00:00 2001 From: Steven Eubank <47563310+smeubank@users.noreply.github.com> Date: Thu, 5 Jan 2023 07:54:50 -0600 Subject: [PATCH 8/8] Update release.mdx --- src/docs/sdk/event-payloads/release.mdx | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/src/docs/sdk/event-payloads/release.mdx b/src/docs/sdk/event-payloads/release.mdx index 790d2ca6f3..ce9880ab4c 100644 --- a/src/docs/sdk/event-payloads/release.mdx +++ b/src/docs/sdk/event-payloads/release.mdx @@ -42,17 +42,4 @@ title: Detect Release Automatically | PHP | in order of precedence:
PHP/Laravel/Symfony
- `options.release`
- `SENTRY_RELEASE` | | Ruby | in order of precedence:
- `config.release`
- `ENV[’SENTRY_RELEASE’]`
- `git rev-parse —short HEAD` if .git present
- capistrano `REVISION` file or from `revisions.log`
- `ENV['HEROKU_SLUG_COMMIT']` if on heroku
- nil otherwise | | Golang | in order of precedence:
- `options.Release`
- various env vars
`"SENTRY_RELEASE"`
`"HEROKU_SLUG_COMMIT"`
`"SOURCE_VERSION"`
`"CODEBUILD_RESOLVED_SOURCE_VERSION"`
`"CIRCLE_SHA1"`
`"GAE_DEPLOYMENT_ID"`
`"GITHUB_SHA"`
`"COMMIT_REF"`
`"VERCEL_GIT_COMMIT_SHA"`
`"ZEIT_GITHUB_COMMIT_SHA"`
`"ZEIT_GITLAB_COMMIT_SHA"`
`"ZEIT_BITBUCKET_COMMIT_SHA"`
- `git describe --long --always --dirty` | -| .NET | In order of precedence: -
- The `release` configuration option if set -
- The `SENTRY_RELEASE` env var if set -
- `"{AssemblyName}@{AssemblyInformationalVersion}"` based on the entry assembly, when an informational version attribute is present (commonly set by csproj `` tag in modern .NET) -
- `"{AssemblyName}@{AssemblyVersion}"` based on the entry assembly, using the full assembly version (usually in older .NET Framework) -
-
Varies slightly for mobile. -
On .NET Android: -
- The `release` configuration option if set -
- `"{PackageName}@{PackageVersion}+{PackageVersionCode}"` from the Android package. (Should matche `appId@appVersion+buildNumber` from the Android SDK.) -
-
On .NET for iOS/MacCatalyst: -
- The Release configuration option if set -
- `"{CFBundleIdentifier}@{CFBundleShortVersionString}+{CFBundleVersion}"` which matches the iOS SDK. | +| .NET | In order of precedence:
- The `release` configuration option if set
- The `SENTRY_RELEASE` env var if set
- `"{AssemblyName}@{AssemblyInformationalVersion}"` based on the entry assembly, when an informational version attribute is present (commonly set by csproj `` tag in modern .NET)
- `"{AssemblyName}@{AssemblyVersion}"` based on the entry assembly, using the full assembly version (usually in older .NET Framework)

Varies slightly for mobile.
On .NET Android:
- The `release` configuration option if set
- `"{PackageName}@{PackageVersion}+{PackageVersionCode}"` from the Android package. (Should matche `appId@appVersion+buildNumber` from the Android SDK.)

On .NET for iOS/MacCatalyst:
- The Release configuration option if set
- `"{CFBundleIdentifier}@{CFBundleShortVersionString}+{CFBundleVersion}"` which matches the iOS SDK. |