Skip to content

Commit ef915ce

Browse files
github-actions[bot]web-flowrunningcodeclauderomtsn
authored
chore(deps): update CLI to v3.0.0 (#1040)
* chore: update plugin-build/sentry-cli.properties to 3.0.0 * fix(test): Add proguard to chunk-upload accept list for sentry-cli 3.0.0 sentry-cli 3.0.0 requires chunk-upload support for ProGuard mappings. The mock server now advertises support for proguard uploads via the chunk-upload endpoint. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * fix(test): Handle ProGuard mappings without debug_id in difs/assemble sentry-cli 3.0.0 sends ProGuard mappings to difs/assemble endpoint without a debug_id field. Updated the mock server to handle both native symbols (with debug_id) and ProGuard mappings (without debug_id). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * Remove unused ReleaseInfo * Mention sentry-cli 3.0 breaking self-hosted * wording --------- Co-authored-by: GitHub <noreply@github.com> Co-authored-by: Nelson Osacky <nelson.osacky@sentry.io> Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com> Co-authored-by: Roman Zavarnitsyn <rom4ek93@gmail.com>
1 parent 87d6c3f commit ef915ce

File tree

6 files changed

+13
-42
lines changed

6 files changed

+13
-42
lines changed

CHANGELOG.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## Unreleased
44

5+
**Breaking changes**:
6+
7+
This version introduces sentry-cli 3.0.0. Sentry-cli 3.0.0 and above only officially supports Sentry SaaS and Sentry self-hosted versions 25.11.1 and higher. While many Sentry CLI features may, in practice, continue working with some older Sentry versions, continued support for Sentry versions older than 25.11.1 is not guaranteed. You can use an older version of the this plugin if you need support for older Sentry self-hosted versions.
8+
59
### Various fixes & improvements
610

711
- Set SENTRY_PIPELINE environment variable for all sentry-cli invocations ([#1036](https://github.com/getsentry/sentry-android-gradle-plugin/pull/1036))
@@ -11,9 +15,9 @@
1115
- Bump Android SDK from v8.26.0 to v8.28.0 ([#1032](https://github.com/getsentry/sentry-android-gradle-plugin/pull/1032), [#1034](https://github.com/getsentry/sentry-android-gradle-plugin/pull/1034))
1216
- [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#8280)
1317
- [diff](https://github.com/getsentry/sentry-java/compare/8.26.0...8.28.0)
14-
- Bump CLI from v2.58.2 to v2.58.4 ([#1037](https://github.com/getsentry/sentry-android-gradle-plugin/pull/1037), [#1038](https://github.com/getsentry/sentry-android-gradle-plugin/pull/1038))
15-
- [changelog](https://github.com/getsentry/sentry-cli/blob/master/CHANGELOG.md#2584)
16-
- [diff](https://github.com/getsentry/sentry-cli/compare/2.58.2...2.58.4)
18+
- Bump CLI from v2.58.2 to v3.0.0 ([#1037](https://github.com/getsentry/sentry-android-gradle-plugin/pull/1037), [#1038](https://github.com/getsentry/sentry-android-gradle-plugin/pull/1038), [#1040](https://github.com/getsentry/sentry-android-gradle-plugin/pull/1040))
19+
- [changelog](https://github.com/getsentry/sentry-cli/blob/master/CHANGELOG.md#300)
20+
- [diff](https://github.com/getsentry/sentry-cli/compare/2.58.2...3.0.0)
1721

1822
## 6.0.0-beta.2
1923

plugin-build/sentry-cli.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
version = 2.58.4
1+
version = 3.0.0
22
repo = https://github.com/getsentry/sentry-cli

plugin-build/src/main/kotlin/io/sentry/android/gradle/AndroidComponentsConfig.kt

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ import io.sentry.android.gradle.tasks.configureNativeSymbolsTask
3333
import io.sentry.android.gradle.tasks.dependencies.SentryExternalDependenciesReportTaskV2
3434
import io.sentry.android.gradle.telemetry.SentryTelemetryService
3535
import io.sentry.android.gradle.util.GroovyCompat
36-
import io.sentry.android.gradle.util.ReleaseInfo
3736
import io.sentry.android.gradle.util.SentryModules
3837
import io.sentry.android.gradle.util.SentryPluginUtils.isMinificationEnabled
3938
import io.sentry.android.gradle.util.SentryPluginUtils.isVariantAllowed
@@ -370,7 +369,6 @@ private fun ApplicationVariant.configureProguardMappingsTasks(
370369
output = paths.proguardUuidDir,
371370
)
372371

373-
val releaseInfo = getReleaseInfo()
374372
val uploadMappingsTask =
375373
SentryUploadProguardMappingsTask.register(
376374
project = project,
@@ -387,7 +385,6 @@ private fun ApplicationVariant.configureProguardMappingsTasks(
387385
sentryAuthToken = extension.authToken,
388386
sentryUrl = extension.url,
389387
taskSuffix = name.capitalized,
390-
releaseInfo = releaseInfo,
391388
)
392389

393390
generateUuidTask.hookWithMinifyTasks(
@@ -505,16 +502,3 @@ private fun <T : InstrumentationParameters> Variant.configureInstrumentation(
505502
instrumentationParamsConfig,
506503
)
507504
}
508-
509-
private fun ApplicationVariant.getReleaseInfo(): ReleaseInfo {
510-
val applicationId = applicationId.orNull ?: namespace.get()
511-
var versionName = outputs.firstOrNull()?.versionName?.orNull
512-
if (versionName.isNullOrEmpty()) {
513-
versionName = "undefined"
514-
}
515-
var versionCode = outputs.firstOrNull()?.versionCode?.orNull
516-
if (versionCode != null && versionCode < 0) {
517-
versionCode = null
518-
}
519-
return ReleaseInfo(applicationId, versionName, versionCode)
520-
}

plugin-build/src/main/kotlin/io/sentry/android/gradle/tasks/SentryUploadProguardMappingsTask.kt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import io.sentry.android.gradle.tasks.SentryGenerateProguardUuidTask.Companion.S
55
import io.sentry.android.gradle.telemetry.SentryTelemetryService
66
import io.sentry.android.gradle.telemetry.withSentryTelemetry
77
import io.sentry.android.gradle.util.PropertiesUtil
8-
import io.sentry.android.gradle.util.ReleaseInfo
98
import io.sentry.android.gradle.util.asSentryCliExec
109
import java.io.File
1110
import org.gradle.api.Project
@@ -45,8 +44,6 @@ abstract class SentryUploadProguardMappingsTask : SentryCliExecTask() {
4544

4645
@get:Input abstract val autoUploadProguardMapping: Property<Boolean>
4746

48-
@get:Input abstract val releaseInfo: Property<ReleaseInfo>
49-
5047
override fun exec() {
5148
if (!mappingsFiles.isPresent || mappingsFiles.get().isEmpty) {
5249
error("[sentry] Mapping files are missing!")
@@ -102,7 +99,6 @@ abstract class SentryUploadProguardMappingsTask : SentryCliExecTask() {
10299
sentryUrl: Property<String>,
103100
autoUploadProguardMapping: Property<Boolean>,
104101
taskSuffix: String = "",
105-
releaseInfo: ReleaseInfo,
106102
): TaskProvider<SentryUploadProguardMappingsTask> {
107103
val uploadSentryProguardMappingsTask =
108104
project.tasks.register(
@@ -119,7 +115,6 @@ abstract class SentryUploadProguardMappingsTask : SentryCliExecTask() {
119115
task.autoUploadProguardMapping.set(autoUploadProguardMapping)
120116
task.sentryOrganization.set(sentryOrg)
121117
task.sentryProject.set(sentryProject)
122-
task.releaseInfo.set(releaseInfo)
123118
task.sentryAuthToken.set(sentryAuthToken)
124119
task.sentryUrl.set(sentryUrl)
125120
sentryTelemetryProvider?.let { task.sentryTelemetryService.set(it) }

plugin-build/src/test/kotlin/io/sentry/android/gradle/tasks/SentryUploadProguardMappingTaskTest.kt

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package io.sentry.android.gradle.tasks
22

3-
import io.sentry.android.gradle.util.ReleaseInfo
43
import java.io.File
54
import java.util.UUID
65
import kotlin.test.assertEquals
@@ -27,7 +26,6 @@ class SentryUploadProguardMappingTaskTest {
2726
val randomUuid = UUID.randomUUID()
2827
val project = createProject()
2928
val uuidFileProvider = createFakeUuid(project, randomUuid)
30-
val releaseInfo = ReleaseInfo("com.test", "1.0.0", 1)
3129

3230
val mappingFile = createMappingFileProvider(project, "dummy/folder/mapping.txt")
3331
val task: TaskProvider<SentryUploadProguardMappingsTask> =
@@ -39,7 +37,6 @@ class SentryUploadProguardMappingTaskTest {
3937
it.uuidFile.set(uuidFileProvider)
4038
it.mappingsFiles = mappingFile
4139
it.autoUploadProguardMapping.set(true)
42-
it.releaseInfo.set(releaseInfo)
4340
}
4441

4542
val args = task.get().computeCommandLineArgs()
@@ -57,7 +54,6 @@ class SentryUploadProguardMappingTaskTest {
5754
val randomUuid = UUID.randomUUID()
5855
val project = createProject()
5956
val uuidFileProvider = createFakeUuid(project, randomUuid)
60-
val releaseInfo = ReleaseInfo("com.test", "1.0.0")
6157

6258
val mappingFile = createMappingFileProvider(project, "dummy/folder/mapping.txt")
6359
val task: TaskProvider<SentryUploadProguardMappingsTask> =
@@ -69,7 +65,6 @@ class SentryUploadProguardMappingTaskTest {
6965
it.uuidFile.set(uuidFileProvider)
7066
it.mappingsFiles = mappingFile
7167
it.autoUploadProguardMapping.set(true)
72-
it.releaseInfo.set(releaseInfo)
7368
}
7469

7570
val args = task.get().computeCommandLineArgs()
@@ -88,7 +83,6 @@ class SentryUploadProguardMappingTaskTest {
8883
val randomUuid = UUID.randomUUID()
8984
val project = createProject()
9085
val uuidFileProvider = createFakeUuid(project, randomUuid)
91-
val releaseInfo = ReleaseInfo("com.test", "1.0.0")
9286

9387
val mappingFiles =
9488
createMappingFileProvider(
@@ -111,7 +105,6 @@ class SentryUploadProguardMappingTaskTest {
111105
it.uuidFile.set(uuidFileProvider)
112106
it.mappingsFiles = mappingFiles
113107
it.autoUploadProguardMapping.set(true)
114-
it.releaseInfo.set(releaseInfo)
115108
}
116109

117110
val args = task.get().computeCommandLineArgs()
@@ -123,7 +116,6 @@ class SentryUploadProguardMappingTaskTest {
123116
fun `--auto-upload is set correctly`() {
124117
val project = createProject()
125118
val uuidFileProvider = createFakeUuid(project)
126-
val releaseInfo = ReleaseInfo("com.test", "1.0.0")
127119

128120
val mappingFile = createMappingFileProvider(project, "dummy/folder/mapping.txt")
129121
val task: TaskProvider<SentryUploadProguardMappingsTask> =
@@ -135,7 +127,6 @@ class SentryUploadProguardMappingTaskTest {
135127
it.uuidFile.set(uuidFileProvider)
136128
it.mappingsFiles = mappingFile
137129
it.autoUploadProguardMapping.set(false)
138-
it.releaseInfo.set(releaseInfo)
139130
}
140131

141132
val args = task.get().computeCommandLineArgs()
@@ -159,7 +150,6 @@ class SentryUploadProguardMappingTaskTest {
159150
it.mappingsFiles = mappingFile
160151
it.autoUploadProguardMapping.set(false)
161152
it.debug.set(true)
162-
it.releaseInfo.set(ReleaseInfo("com.test", "1.0.0"))
163153
}
164154

165155
val args = task.get().computeCommandLineArgs()
@@ -222,7 +212,6 @@ class SentryUploadProguardMappingTaskTest {
222212
val project = createProject()
223213
val uuidFileProvider = createFakeUuid(project)
224214
val mappingFile = createMappingFileProvider(project, "dummy/folder/mapping.txt")
225-
val releaseInfo = ReleaseInfo("com.test", "1.0.0")
226215
val task: TaskProvider<SentryUploadProguardMappingsTask> =
227216
project.tasks.register(
228217
"testUploadProguardMapping",
@@ -233,7 +222,6 @@ class SentryUploadProguardMappingTaskTest {
233222
it.uuidFile.set(uuidFileProvider)
234223
it.mappingsFiles = mappingFile
235224
it.autoUploadProguardMapping.set(false)
236-
it.releaseInfo.set(ReleaseInfo("com.test", "1.0.0", 1))
237225
}
238226

239227
val args = task.get().computeCommandLineArgs()
@@ -258,7 +246,6 @@ class SentryUploadProguardMappingTaskTest {
258246
it.mappingsFiles = mappingFile
259247
it.autoUploadProguardMapping.set(false)
260248
it.sentryOrganization.set("dummy-org")
261-
it.releaseInfo.set(ReleaseInfo("com.test", "1.0.0", 1))
262249
}
263250

264251
val args = task.get().computeCommandLineArgs()
@@ -283,7 +270,6 @@ class SentryUploadProguardMappingTaskTest {
283270
it.mappingsFiles = mappingFile
284271
it.autoUploadProguardMapping.set(false)
285272
it.sentryProject.set("dummy-proj")
286-
it.releaseInfo.set(ReleaseInfo("com.test", "1.0.0", 1))
287273
}
288274

289275
val args = task.get().computeCommandLineArgs()

test/integration-test-server.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def do_GET(self):
2929
self.writeJSON('{"url":"' + uri.geturl() + self.path + '",'
3030
'"chunkSize":8388608,"chunksPerRequest":64,"maxFileSize":2147483648,'
3131
'"maxRequestSize":33554432,"concurrency":1,"hashAlgorithm":"sha1","compression":["gzip"],'
32-
'"accept":["debug_files","release_files","pdbs","sources","bcsymbolmaps","preprod_artifacts"]}')
32+
'"accept":["debug_files","release_files","pdbs","sources","bcsymbolmaps","preprod_artifacts","proguard"]}')
3333
elif self.isApi('/api/0/organizations/{}/repos/?cursor='.format(apiOrg)):
3434
self.writeJSONFile("test/assets/repos.json")
3535
elif self.isApi('/api/0/organizations/{}/releases/{}/previous-with-commits/'.format(apiOrg, version)):
@@ -58,10 +58,12 @@ def do_POST(self):
5858
jsonRequest = json.loads(self.body)
5959
jsonResponse = '{'
6060
for key, value in jsonRequest.items():
61+
# ProGuard mappings don't have debug_id, use key as uploaded_id instead
62+
uploaded_id = value.get('debug_id', key)
6163
jsonResponse += '"{}":{{"state":"ok","missingChunks":[],"uploaded_id":"{}"}},'.format(
62-
key, value['debug_id'])
64+
key, uploaded_id)
6365
self.log_message('Received: %40s %40s %s', key,
64-
value['debug_id'], value['name'])
66+
uploaded_id, value['name'])
6567
jsonResponse = jsonResponse.rstrip(',') + '}'
6668
self.writeJSON(jsonResponse)
6769
elif self.isApi('api/0/projects/{}/{}/releases/'.format(apiOrg, apiProject)):

0 commit comments

Comments
 (0)