From b401e87aaea7c1a6386495979846fe9a3bdb13f3 Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Wed, 10 Dec 2025 17:39:38 +0100 Subject: [PATCH 1/4] feat(cli): Set SENTRY_PIPELINE environment variable for all sentry-cli invocations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This sets SENTRY_PIPELINE to 'sentry-gradle-plugin/' for all sentry-cli invocations, enabling better pipeline tracking and analytics on the server side. The environment variable is now set in: - SentryCliExecTask (base class for all CLI execution tasks) - SentryCliInfoValueSource (for CLI info gathering) - SentryCliVersionValueSource (for CLI version detection) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- .../io/sentry/android/gradle/tasks/SentryCliExecTask.kt | 6 ++++++ .../android/gradle/telemetry/SentryTelemetryService.kt | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/plugin-build/src/main/kotlin/io/sentry/android/gradle/tasks/SentryCliExecTask.kt b/plugin-build/src/main/kotlin/io/sentry/android/gradle/tasks/SentryCliExecTask.kt index 74763242..322faf74 100644 --- a/plugin-build/src/main/kotlin/io/sentry/android/gradle/tasks/SentryCliExecTask.kt +++ b/plugin-build/src/main/kotlin/io/sentry/android/gradle/tasks/SentryCliExecTask.kt @@ -1,5 +1,6 @@ package io.sentry.android.gradle.tasks +import io.sentry.BuildConfig import io.sentry.android.gradle.SentryCliProvider import io.sentry.android.gradle.telemetry.SentryTelemetryService import io.sentry.android.gradle.util.info @@ -48,6 +49,7 @@ abstract class SentryCliExecTask : Exec() { } setSentryPropertiesEnv() setSentryAuthTokenEnv() + setSentryPipelineEnv() super.exec() } @@ -118,4 +120,8 @@ abstract class SentryCliExecTask : Exec() { logger.info { "sentryAuthToken is null" } } } + + internal fun setSentryPipelineEnv() { + environment("SENTRY_PIPELINE", "sentry-gradle-plugin/${BuildConfig.Version}") + } } diff --git a/plugin-build/src/main/kotlin/io/sentry/android/gradle/telemetry/SentryTelemetryService.kt b/plugin-build/src/main/kotlin/io/sentry/android/gradle/telemetry/SentryTelemetryService.kt index bd537f72..14b6e63e 100644 --- a/plugin-build/src/main/kotlin/io/sentry/android/gradle/telemetry/SentryTelemetryService.kt +++ b/plugin-build/src/main/kotlin/io/sentry/android/gradle/telemetry/SentryTelemetryService.kt @@ -449,6 +449,8 @@ abstract class SentryCliInfoValueSource : ValueSource { it.environment("SENTRY_AUTH_TOKEN", authToken) } + it.environment("SENTRY_PIPELINE", "sentry-gradle-plugin/${BuildConfig.Version}") + it.commandLine(args) it.standardOutput = stdOutput it.errorOutput = errOutput @@ -491,6 +493,8 @@ abstract class SentryCliVersionValueSource : ValueSource args.add("--log-level=error") args.add("--version") + it.environment("SENTRY_PIPELINE", "sentry-gradle-plugin/${BuildConfig.Version}") + it.commandLine(args) it.standardOutput = output } From 7b912e23ca4421ae0443e42191a44f7a4943e922 Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Wed, 10 Dec 2025 17:44:52 +0100 Subject: [PATCH 2/4] refactor(cli): Centralize SENTRY_PIPELINE environment variable setup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Extracted the SENTRY_PIPELINE environment variable setup into a reusable extension function `ExecSpec.setSentryPipelineEnv()` in SentryCliExec.kt. This eliminates code duplication and provides a single source of truth for setting the pipeline environment variable across all sentry-cli invocations. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- .../sentry/android/gradle/tasks/SentryCliExecTask.kt | 6 +----- .../android/gradle/telemetry/SentryTelemetryService.kt | 5 +++-- .../io/sentry/android/gradle/util/SentryCliExec.kt | 10 ++++++++++ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/plugin-build/src/main/kotlin/io/sentry/android/gradle/tasks/SentryCliExecTask.kt b/plugin-build/src/main/kotlin/io/sentry/android/gradle/tasks/SentryCliExecTask.kt index 322faf74..aaa331f0 100644 --- a/plugin-build/src/main/kotlin/io/sentry/android/gradle/tasks/SentryCliExecTask.kt +++ b/plugin-build/src/main/kotlin/io/sentry/android/gradle/tasks/SentryCliExecTask.kt @@ -1,9 +1,9 @@ package io.sentry.android.gradle.tasks -import io.sentry.BuildConfig import io.sentry.android.gradle.SentryCliProvider import io.sentry.android.gradle.telemetry.SentryTelemetryService import io.sentry.android.gradle.util.info +import io.sentry.android.gradle.util.setSentryPipelineEnv import java.io.File import org.apache.tools.ant.taskdefs.condition.Os import org.gradle.api.file.RegularFileProperty @@ -120,8 +120,4 @@ abstract class SentryCliExecTask : Exec() { logger.info { "sentryAuthToken is null" } } } - - internal fun setSentryPipelineEnv() { - environment("SENTRY_PIPELINE", "sentry-gradle-plugin/${BuildConfig.Version}") - } } diff --git a/plugin-build/src/main/kotlin/io/sentry/android/gradle/telemetry/SentryTelemetryService.kt b/plugin-build/src/main/kotlin/io/sentry/android/gradle/telemetry/SentryTelemetryService.kt index 14b6e63e..c8ec976e 100644 --- a/plugin-build/src/main/kotlin/io/sentry/android/gradle/telemetry/SentryTelemetryService.kt +++ b/plugin-build/src/main/kotlin/io/sentry/android/gradle/telemetry/SentryTelemetryService.kt @@ -24,6 +24,7 @@ import io.sentry.android.gradle.util.SentryCliException import io.sentry.android.gradle.util.error import io.sentry.android.gradle.util.getBuildServiceName import io.sentry.android.gradle.util.info +import io.sentry.android.gradle.util.setSentryPipelineEnv import io.sentry.exception.ExceptionMechanismException import io.sentry.gradle.common.SentryVariant import io.sentry.protocol.Mechanism @@ -449,7 +450,7 @@ abstract class SentryCliInfoValueSource : ValueSource { it.environment("SENTRY_AUTH_TOKEN", authToken) } - it.environment("SENTRY_PIPELINE", "sentry-gradle-plugin/${BuildConfig.Version}") + it.setSentryPipelineEnv() it.commandLine(args) it.standardOutput = stdOutput @@ -493,7 +494,7 @@ abstract class SentryCliVersionValueSource : ValueSource args.add("--log-level=error") args.add("--version") - it.environment("SENTRY_PIPELINE", "sentry-gradle-plugin/${BuildConfig.Version}") + it.setSentryPipelineEnv() it.commandLine(args) it.standardOutput = output diff --git a/plugin-build/src/main/kotlin/io/sentry/android/gradle/util/SentryCliExec.kt b/plugin-build/src/main/kotlin/io/sentry/android/gradle/util/SentryCliExec.kt index efc9c226..8327fe0d 100644 --- a/plugin-build/src/main/kotlin/io/sentry/android/gradle/util/SentryCliExec.kt +++ b/plugin-build/src/main/kotlin/io/sentry/android/gradle/util/SentryCliExec.kt @@ -1,9 +1,19 @@ package io.sentry.android.gradle.util +import io.sentry.BuildConfig import io.sentry.android.gradle.util.CliFailureReason.OUTDATED import java.io.ByteArrayOutputStream import org.gradle.api.GradleException import org.gradle.api.tasks.Exec +import org.gradle.process.ExecSpec + +/** + * Sets the SENTRY_PIPELINE environment variable for sentry-cli invocations. + * This helps identify the pipeline source in Sentry's analytics. + */ +fun ExecSpec.setSentryPipelineEnv() { + environment("SENTRY_PIPELINE", "sentry-gradle-plugin/${BuildConfig.Version}") +} /** * An ext function for tasks that wrap sentry-cli, which provides common error handling. Must be From 48b1f23646a878f81bd2e7c8a2c1a5b3b2e1a45c Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Wed, 10 Dec 2025 17:46:18 +0100 Subject: [PATCH 3/4] refactor(cli): Remove comment from setSentryPipelineEnv function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- .../kotlin/io/sentry/android/gradle/util/SentryCliExec.kt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/plugin-build/src/main/kotlin/io/sentry/android/gradle/util/SentryCliExec.kt b/plugin-build/src/main/kotlin/io/sentry/android/gradle/util/SentryCliExec.kt index 8327fe0d..55a25fec 100644 --- a/plugin-build/src/main/kotlin/io/sentry/android/gradle/util/SentryCliExec.kt +++ b/plugin-build/src/main/kotlin/io/sentry/android/gradle/util/SentryCliExec.kt @@ -7,10 +7,6 @@ import org.gradle.api.GradleException import org.gradle.api.tasks.Exec import org.gradle.process.ExecSpec -/** - * Sets the SENTRY_PIPELINE environment variable for sentry-cli invocations. - * This helps identify the pipeline source in Sentry's analytics. - */ fun ExecSpec.setSentryPipelineEnv() { environment("SENTRY_PIPELINE", "sentry-gradle-plugin/${BuildConfig.Version}") } From 10c96d74772819bbcabf7fab412b5b77d04218a8 Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Wed, 10 Dec 2025 17:48:01 +0100 Subject: [PATCH 4/4] meta(changelog): Add entry for SENTRY_PIPELINE environment variable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b342db44..ec08d0a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +### Various fixes & improvements + +- Set SENTRY_PIPELINE environment variable for all sentry-cli invocations ([#1036](https://github.com/getsentry/sentry-android-gradle-plugin/pull/1036)) + ### Dependencies - Bump Android SDK from v8.26.0 to v8.27.1 ([#1032](https://github.com/getsentry/sentry-android-gradle-plugin/pull/1032))