refactor(build): always enable Sentry and set environment

Thx Static-Var my beloved
This commit is contained in:
Harsh Shandilya 2024-03-16 09:56:40 +05:30
parent 85fc5cac21
commit 5ba0c9a544
7 changed files with 30 additions and 16 deletions

View File

@ -70,7 +70,7 @@ jobs:
SENTRY_DSN: ${{ secrets.SENTRY_DSN }} SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
run: | run: |
./gradlew --no-configuration-cache collectReleaseApks collectReleaseBundle -PsentryUploadMappings ./gradlew --no-configuration-cache collectReleaseApks collectReleaseBundle -PenableSentry
- name: Clean secrets - name: Clean secrets
run: scripts/signing-cleanup.sh run: scripts/signing-cleanup.sh

View File

@ -35,7 +35,7 @@ jobs:
run: | run: |
./scripts/setup-age.sh ./scripts/setup-age.sh
./scripts/signing-setup.sh "$AGE_SECRET_KEY" ./scripts/signing-setup.sh "$AGE_SECRET_KEY"
./gradlew --no-configuration-cache --stacktrace -PsentryUploadMappings collectReleaseBundle ./gradlew --no-configuration-cache --stacktrace -PenableSentry collectReleaseBundle
./scripts/signing-cleanup.sh ./scripts/signing-cleanup.sh
env: env:
AGE_SECRET_KEY: ${{ secrets.AGE_SECRET_KEY }} AGE_SECRET_KEY: ${{ secrets.AGE_SECRET_KEY }}

View File

@ -178,17 +178,19 @@
<!-- enable automatic breadcrumbs for user interactions (clicks, swipes, scrolls) --> <!-- enable automatic breadcrumbs for user interactions (clicks, swipes, scrolls) -->
<meta-data <meta-data
android:name="io.sentry.traces.user-interaction.enable" android:name="io.sentry.traces.user-interaction.enable"
android:value="${enableSentry}" /> android:value="true" />
<meta-data <meta-data
android:name="io.sentry.breadcrumbs.user-interaction" android:name="io.sentry.breadcrumbs.user-interaction"
android:value="${enableSentry}" /> android:value="true" />
<!-- enable screenshot for crashes --> <!-- enable screenshot for crashes -->
<meta-data <meta-data
android:name="io.sentry.attach-screenshot" android:name="io.sentry.attach-screenshot"
android:value="${enableSentry}" /> android:value="true" />
<!-- enable view hierarchy for crashes --> <!-- enable view hierarchy for crashes -->
<meta-data <meta-data
android:name="io.sentry.attach-view-hierarchy" android:name="io.sentry.attach-view-hierarchy"
android:value="${enableSentry}" /> android:value="true" />
<!-- set the environment for this build -->
<meta-data android:name="io.sentry.environment" android:value="${sentryEnvironment}" />
</application> </application>
</manifest> </manifest>

View File

@ -1,5 +1,5 @@
/* /*
* Copyright © 2022-2023 Harsh Shandilya. * Copyright © 2022-2024 Harsh Shandilya.
* Use of this source code is governed by an MIT-style * Use of this source code is governed by an MIT-style
* license that can be found in the LICENSE file or at * license that can be found in the LICENSE file or at
* https://opensource.org/licenses/MIT. * https://opensource.org/licenses/MIT.

View File

@ -1,5 +1,5 @@
/* /*
* Copyright © 2023 Harsh Shandilya. * Copyright © 2023-2024 Harsh Shandilya.
* Use of this source code is governed by an MIT-style * Use of this source code is governed by an MIT-style
* license that can be found in the LICENSE file or at * license that can be found in the LICENSE file or at
* https://opensource.org/licenses/MIT. * https://opensource.org/licenses/MIT.

View File

@ -25,25 +25,33 @@ class SentryPlugin : Plugin<Project> {
project.extensions.configure<ApplicationAndroidComponentsExtension> { project.extensions.configure<ApplicationAndroidComponentsExtension> {
onVariants(selector().all()) { variant -> onVariants(selector().all()) { variant ->
val sentryDsn = project.providers.environmentVariable(SENTRY_DSN_PROPERTY) val sentryDsn = project.providers.environmentVariable(SENTRY_DSN_PROPERTY)
val enableSentry =
project.providers.gradleProperty(SENTRY_ENABLE_GRADLE_PROPERTY).isPresent
variant.manifestPlaceholders.put("sentryDsn", sentryDsn.getOrElse("")) variant.manifestPlaceholders.put("sentryDsn", sentryDsn.getOrElse(""))
variant.manifestPlaceholders.put("enableSentry", "${variant.name == "release"}") variant.manifestPlaceholders.put(
"sentryEnvironment",
when {
variant.name.contains("release", true) && enableSentry -> "production"
variant.name.contains("release", true) && !enableSentry -> "nightly"
else -> "dev"
},
)
} }
} }
project.plugins.apply(io.sentry.android.gradle.SentryPlugin::class) project.plugins.apply(io.sentry.android.gradle.SentryPlugin::class)
project.extensions.configure<SentryPluginExtension> { project.extensions.configure<SentryPluginExtension> {
val enableMappings = includeProguardMapping.set(true)
project.providers.gradleProperty(SENTRY_UPLOAD_MAPPINGS_PROPERTY).isPresent autoUploadProguardMapping.set(true)
includeProguardMapping.set(enableMappings)
autoUploadProguardMapping.set(enableMappings)
uploadNativeSymbols.set(false) uploadNativeSymbols.set(false)
autoUploadNativeSymbols.set(false) autoUploadNativeSymbols.set(false)
includeNativeSources.set(false) includeNativeSources.set(false)
ignoredVariants.set(emptySet()) ignoredVariants.set(emptySet())
ignoredBuildTypes.set(setOf("benchmark", "debug")) ignoredBuildTypes.set(setOf("benchmark"))
ignoredFlavors.set(emptySet()) ignoredFlavors.set(emptySet())
tracingInstrumentation { tracingInstrumentation {
enabled.set(true) enabled.set(true)
debug.set(false) debug.set(false)
logcat.enabled.set(true)
forceInstrumentDependencies.set(false) forceInstrumentDependencies.set(false)
features.set(EnumSet.allOf(InstrumentationFeature::class.java)) features.set(EnumSet.allOf(InstrumentationFeature::class.java))
} }
@ -64,13 +72,16 @@ class SentryPlugin : Plugin<Project> {
telemetry.set(false) telemetry.set(false)
telemetryDsn.set(null) telemetryDsn.set(null)
} }
with(project.dependencies) { addProvider("implementation", platform(libs.sentry.bom)) } with(project.dependencies) {
addProvider("implementation", platform(libs.sentry.bom))
addProvider("implementation", libs.sentry.android)
}
} }
} }
private companion object { private companion object {
private const val SENTRY_DSN_PROPERTY = "SENTRY_DSN" private const val SENTRY_DSN_PROPERTY = "SENTRY_DSN"
private const val SENTRY_UPLOAD_MAPPINGS_PROPERTY = "sentryUploadMappings" private const val SENTRY_ENABLE_GRADLE_PROPERTY = "enableSentry"
} }
} }

View File

@ -93,6 +93,7 @@ okhttp-loggingInterceptor = { module = "com.squareup.okhttp3:logging-interceptor
okhttp-mockwebserver = { module = "com.squareup.okhttp3:mockwebserver" } okhttp-mockwebserver = { module = "com.squareup.okhttp3:mockwebserver" }
retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" } retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" }
retrofit-kotlinxSerializationConverter = "com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:1.0.0" retrofit-kotlinxSerializationConverter = "com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:1.0.0"
sentry-android = { module = "io.sentry:sentry-android", version.ref = "sentry-sdk" }
sentry-bom = { module = "io.sentry:sentry-bom", version.ref = "sentry-sdk" } sentry-bom = { module = "io.sentry:sentry-bom", version.ref = "sentry-sdk" }
sentry-okhttp = { module = "io.sentry:sentry-okhttp", version.ref = "sentry-sdk" } sentry-okhttp = { module = "io.sentry:sentry-okhttp", version.ref = "sentry-sdk" }
slack-compose-lints = "com.slack.lint.compose:compose-lint-checks:1.3.1" slack-compose-lints = "com.slack.lint.compose:compose-lint-checks:1.3.1"