diff --git a/CHANGELOG.md b/CHANGELOG.md index df0443794..043c0434a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +**Breaking changes**: + +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. + ### Various fixes & improvements - 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 @@ - 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)) - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#8280) - [diff](https://github.com/getsentry/sentry-java/compare/8.26.0...8.28.0) -- 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)) - - [changelog](https://github.com/getsentry/sentry-cli/blob/master/CHANGELOG.md#2584) - - [diff](https://github.com/getsentry/sentry-cli/compare/2.58.2...2.58.4) +- 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)) + - [changelog](https://github.com/getsentry/sentry-cli/blob/master/CHANGELOG.md#300) + - [diff](https://github.com/getsentry/sentry-cli/compare/2.58.2...3.0.0) ## 6.0.0-beta.2 diff --git a/plugin-build/sentry-cli.properties b/plugin-build/sentry-cli.properties index 4f9a63e51..de657146b 100644 --- a/plugin-build/sentry-cli.properties +++ b/plugin-build/sentry-cli.properties @@ -1,2 +1,2 @@ -version = 2.58.4 +version = 3.0.0 repo = https://github.com/getsentry/sentry-cli diff --git a/plugin-build/src/main/kotlin/io/sentry/android/gradle/AndroidComponentsConfig.kt b/plugin-build/src/main/kotlin/io/sentry/android/gradle/AndroidComponentsConfig.kt index ebcd1de78..a0c55724a 100644 --- a/plugin-build/src/main/kotlin/io/sentry/android/gradle/AndroidComponentsConfig.kt +++ b/plugin-build/src/main/kotlin/io/sentry/android/gradle/AndroidComponentsConfig.kt @@ -33,7 +33,6 @@ import io.sentry.android.gradle.tasks.configureNativeSymbolsTask import io.sentry.android.gradle.tasks.dependencies.SentryExternalDependenciesReportTaskV2 import io.sentry.android.gradle.telemetry.SentryTelemetryService import io.sentry.android.gradle.util.GroovyCompat -import io.sentry.android.gradle.util.ReleaseInfo import io.sentry.android.gradle.util.SentryModules import io.sentry.android.gradle.util.SentryPluginUtils.isMinificationEnabled import io.sentry.android.gradle.util.SentryPluginUtils.isVariantAllowed @@ -370,7 +369,6 @@ private fun ApplicationVariant.configureProguardMappingsTasks( output = paths.proguardUuidDir, ) - val releaseInfo = getReleaseInfo() val uploadMappingsTask = SentryUploadProguardMappingsTask.register( project = project, @@ -387,7 +385,6 @@ private fun ApplicationVariant.configureProguardMappingsTasks( sentryAuthToken = extension.authToken, sentryUrl = extension.url, taskSuffix = name.capitalized, - releaseInfo = releaseInfo, ) generateUuidTask.hookWithMinifyTasks( @@ -505,16 +502,3 @@ private fun Variant.configureInstrumentation( instrumentationParamsConfig, ) } - -private fun ApplicationVariant.getReleaseInfo(): ReleaseInfo { - val applicationId = applicationId.orNull ?: namespace.get() - var versionName = outputs.firstOrNull()?.versionName?.orNull - if (versionName.isNullOrEmpty()) { - versionName = "undefined" - } - var versionCode = outputs.firstOrNull()?.versionCode?.orNull - if (versionCode != null && versionCode < 0) { - versionCode = null - } - return ReleaseInfo(applicationId, versionName, versionCode) -} diff --git a/plugin-build/src/main/kotlin/io/sentry/android/gradle/tasks/SentryUploadProguardMappingsTask.kt b/plugin-build/src/main/kotlin/io/sentry/android/gradle/tasks/SentryUploadProguardMappingsTask.kt index 72271efa2..31ef2b85b 100644 --- a/plugin-build/src/main/kotlin/io/sentry/android/gradle/tasks/SentryUploadProguardMappingsTask.kt +++ b/plugin-build/src/main/kotlin/io/sentry/android/gradle/tasks/SentryUploadProguardMappingsTask.kt @@ -5,7 +5,6 @@ import io.sentry.android.gradle.tasks.SentryGenerateProguardUuidTask.Companion.S import io.sentry.android.gradle.telemetry.SentryTelemetryService import io.sentry.android.gradle.telemetry.withSentryTelemetry import io.sentry.android.gradle.util.PropertiesUtil -import io.sentry.android.gradle.util.ReleaseInfo import io.sentry.android.gradle.util.asSentryCliExec import java.io.File import org.gradle.api.Project @@ -45,8 +44,6 @@ abstract class SentryUploadProguardMappingsTask : SentryCliExecTask() { @get:Input abstract val autoUploadProguardMapping: Property - @get:Input abstract val releaseInfo: Property - override fun exec() { if (!mappingsFiles.isPresent || mappingsFiles.get().isEmpty) { error("[sentry] Mapping files are missing!") @@ -102,7 +99,6 @@ abstract class SentryUploadProguardMappingsTask : SentryCliExecTask() { sentryUrl: Property, autoUploadProguardMapping: Property, taskSuffix: String = "", - releaseInfo: ReleaseInfo, ): TaskProvider { val uploadSentryProguardMappingsTask = project.tasks.register( @@ -119,7 +115,6 @@ abstract class SentryUploadProguardMappingsTask : SentryCliExecTask() { task.autoUploadProguardMapping.set(autoUploadProguardMapping) task.sentryOrganization.set(sentryOrg) task.sentryProject.set(sentryProject) - task.releaseInfo.set(releaseInfo) task.sentryAuthToken.set(sentryAuthToken) task.sentryUrl.set(sentryUrl) sentryTelemetryProvider?.let { task.sentryTelemetryService.set(it) } diff --git a/plugin-build/src/test/kotlin/io/sentry/android/gradle/tasks/SentryUploadProguardMappingTaskTest.kt b/plugin-build/src/test/kotlin/io/sentry/android/gradle/tasks/SentryUploadProguardMappingTaskTest.kt index 9b43192b9..2c22b99a6 100644 --- a/plugin-build/src/test/kotlin/io/sentry/android/gradle/tasks/SentryUploadProguardMappingTaskTest.kt +++ b/plugin-build/src/test/kotlin/io/sentry/android/gradle/tasks/SentryUploadProguardMappingTaskTest.kt @@ -1,6 +1,5 @@ package io.sentry.android.gradle.tasks -import io.sentry.android.gradle.util.ReleaseInfo import java.io.File import java.util.UUID import kotlin.test.assertEquals @@ -27,7 +26,6 @@ class SentryUploadProguardMappingTaskTest { val randomUuid = UUID.randomUUID() val project = createProject() val uuidFileProvider = createFakeUuid(project, randomUuid) - val releaseInfo = ReleaseInfo("com.test", "1.0.0", 1) val mappingFile = createMappingFileProvider(project, "dummy/folder/mapping.txt") val task: TaskProvider = @@ -39,7 +37,6 @@ class SentryUploadProguardMappingTaskTest { it.uuidFile.set(uuidFileProvider) it.mappingsFiles = mappingFile it.autoUploadProguardMapping.set(true) - it.releaseInfo.set(releaseInfo) } val args = task.get().computeCommandLineArgs() @@ -57,7 +54,6 @@ class SentryUploadProguardMappingTaskTest { val randomUuid = UUID.randomUUID() val project = createProject() val uuidFileProvider = createFakeUuid(project, randomUuid) - val releaseInfo = ReleaseInfo("com.test", "1.0.0") val mappingFile = createMappingFileProvider(project, "dummy/folder/mapping.txt") val task: TaskProvider = @@ -69,7 +65,6 @@ class SentryUploadProguardMappingTaskTest { it.uuidFile.set(uuidFileProvider) it.mappingsFiles = mappingFile it.autoUploadProguardMapping.set(true) - it.releaseInfo.set(releaseInfo) } val args = task.get().computeCommandLineArgs() @@ -88,7 +83,6 @@ class SentryUploadProguardMappingTaskTest { val randomUuid = UUID.randomUUID() val project = createProject() val uuidFileProvider = createFakeUuid(project, randomUuid) - val releaseInfo = ReleaseInfo("com.test", "1.0.0") val mappingFiles = createMappingFileProvider( @@ -111,7 +105,6 @@ class SentryUploadProguardMappingTaskTest { it.uuidFile.set(uuidFileProvider) it.mappingsFiles = mappingFiles it.autoUploadProguardMapping.set(true) - it.releaseInfo.set(releaseInfo) } val args = task.get().computeCommandLineArgs() @@ -123,7 +116,6 @@ class SentryUploadProguardMappingTaskTest { fun `--auto-upload is set correctly`() { val project = createProject() val uuidFileProvider = createFakeUuid(project) - val releaseInfo = ReleaseInfo("com.test", "1.0.0") val mappingFile = createMappingFileProvider(project, "dummy/folder/mapping.txt") val task: TaskProvider = @@ -135,7 +127,6 @@ class SentryUploadProguardMappingTaskTest { it.uuidFile.set(uuidFileProvider) it.mappingsFiles = mappingFile it.autoUploadProguardMapping.set(false) - it.releaseInfo.set(releaseInfo) } val args = task.get().computeCommandLineArgs() @@ -159,7 +150,6 @@ class SentryUploadProguardMappingTaskTest { it.mappingsFiles = mappingFile it.autoUploadProguardMapping.set(false) it.debug.set(true) - it.releaseInfo.set(ReleaseInfo("com.test", "1.0.0")) } val args = task.get().computeCommandLineArgs() @@ -222,7 +212,6 @@ class SentryUploadProguardMappingTaskTest { val project = createProject() val uuidFileProvider = createFakeUuid(project) val mappingFile = createMappingFileProvider(project, "dummy/folder/mapping.txt") - val releaseInfo = ReleaseInfo("com.test", "1.0.0") val task: TaskProvider = project.tasks.register( "testUploadProguardMapping", @@ -233,7 +222,6 @@ class SentryUploadProguardMappingTaskTest { it.uuidFile.set(uuidFileProvider) it.mappingsFiles = mappingFile it.autoUploadProguardMapping.set(false) - it.releaseInfo.set(ReleaseInfo("com.test", "1.0.0", 1)) } val args = task.get().computeCommandLineArgs() @@ -258,7 +246,6 @@ class SentryUploadProguardMappingTaskTest { it.mappingsFiles = mappingFile it.autoUploadProguardMapping.set(false) it.sentryOrganization.set("dummy-org") - it.releaseInfo.set(ReleaseInfo("com.test", "1.0.0", 1)) } val args = task.get().computeCommandLineArgs() @@ -283,7 +270,6 @@ class SentryUploadProguardMappingTaskTest { it.mappingsFiles = mappingFile it.autoUploadProguardMapping.set(false) it.sentryProject.set("dummy-proj") - it.releaseInfo.set(ReleaseInfo("com.test", "1.0.0", 1)) } val args = task.get().computeCommandLineArgs() diff --git a/test/integration-test-server.py b/test/integration-test-server.py index 1dca0a1d2..e8f18a76c 100644 --- a/test/integration-test-server.py +++ b/test/integration-test-server.py @@ -29,7 +29,7 @@ def do_GET(self): self.writeJSON('{"url":"' + uri.geturl() + self.path + '",' '"chunkSize":8388608,"chunksPerRequest":64,"maxFileSize":2147483648,' '"maxRequestSize":33554432,"concurrency":1,"hashAlgorithm":"sha1","compression":["gzip"],' - '"accept":["debug_files","release_files","pdbs","sources","bcsymbolmaps","preprod_artifacts"]}') + '"accept":["debug_files","release_files","pdbs","sources","bcsymbolmaps","preprod_artifacts","proguard"]}') elif self.isApi('/api/0/organizations/{}/repos/?cursor='.format(apiOrg)): self.writeJSONFile("test/assets/repos.json") elif self.isApi('/api/0/organizations/{}/releases/{}/previous-with-commits/'.format(apiOrg, version)): @@ -58,10 +58,12 @@ def do_POST(self): jsonRequest = json.loads(self.body) jsonResponse = '{' for key, value in jsonRequest.items(): + # ProGuard mappings don't have debug_id, use key as uploaded_id instead + uploaded_id = value.get('debug_id', key) jsonResponse += '"{}":{{"state":"ok","missingChunks":[],"uploaded_id":"{}"}},'.format( - key, value['debug_id']) + key, uploaded_id) self.log_message('Received: %40s %40s %s', key, - value['debug_id'], value['name']) + uploaded_id, value['name']) jsonResponse = jsonResponse.rstrip(',') + '}' self.writeJSON(jsonResponse) elif self.isApi('api/0/projects/{}/{}/releases/'.format(apiOrg, apiProject)):