From e84a32e380363741cea42a6edc42e94f25efbec5 Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Wed, 6 May 2026 17:53:48 +0200 Subject: [PATCH 1/8] chore: Add Develocity build scan plugin Adds the Develocity Gradle plugin (v4.4.1) to publish build scans on every build, making it easier to debug and analyze build performance. Co-Authored-By: Claude Opus 4.6 (1M context) --- settings.gradle.kts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/settings.gradle.kts b/settings.gradle.kts index 4b1c606bc64..f8c7dbbf356 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -7,6 +7,18 @@ pluginManagement { } } +plugins { + id("com.gradle.develocity") version "4.4.1" +} + +develocity { + buildScan { + termsOfUseUrl.set("https://gradle.com/help/legal-terms-of-use") + termsOfUseAgree.set("yes") + publishing.onlyIf { true } + } +} + dependencyResolutionManagement { repositories { google() From 9b87d203d2c583fc1d0746dbd5615e2c6a7200ef Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Wed, 6 May 2026 20:24:48 +0200 Subject: [PATCH 2/8] chore: Reduce test heap size and remove redundant sample config Lower maxHeapSize from 2g to 1g for all tests in the root build. Remove duplicated maxParallelForks and heap settings from sample project systemTest tasks since they inherit from the root config. Use typed tasks.named where applicable. Co-Authored-By: Claude Opus 4.6 (1M context) --- build.gradle.kts | 2 +- .../build.gradle.kts | 5 ----- .../sentry-samples-console-otlp/build.gradle.kts | 5 ----- sentry-samples/sentry-samples-console/build.gradle.kts | 5 ----- sentry-samples/sentry-samples-jul/build.gradle.kts | 5 ----- sentry-samples/sentry-samples-log4j2/build.gradle.kts | 5 ----- sentry-samples/sentry-samples-logback/build.gradle.kts | 5 ----- .../sentry-samples-spring-7/build.gradle.kts | 5 ----- .../build.gradle.kts | 5 ----- .../build.gradle.kts | 5 ----- .../sentry-samples-spring-boot-4-otlp/build.gradle.kts | 5 ----- .../build.gradle.kts | 5 ----- .../sentry-samples-spring-boot-4/build.gradle.kts | 5 ----- .../build.gradle.kts | 6 ------ .../build.gradle.kts | 5 ----- .../build.gradle.kts | 8 +------- .../build.gradle.kts | 6 ------ .../build.gradle.kts | 6 ------ .../build.gradle.kts | 10 +--------- .../build.gradle.kts | 6 ------ .../sentry-samples-spring-boot/build.gradle.kts | 5 ----- .../sentry-samples-spring-jakarta/build.gradle.kts | 8 +------- sentry-samples/sentry-samples-spring/build.gradle.kts | 5 ----- 23 files changed, 4 insertions(+), 123 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 6656e00e49a..949c7670ba4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -110,7 +110,7 @@ allprojects { // Cap JVM args per test minHeapSize = "256m" - maxHeapSize = "2g" + maxHeapSize = "1g" } withType().configureEach { options.compilerArgs.addAll(arrayOf("-Xlint:all", "-Werror", "-Xlint:-classfile", "-Xlint:-processing", "-Xlint:-try")) diff --git a/sentry-samples/sentry-samples-console-opentelemetry-noagent/build.gradle.kts b/sentry-samples/sentry-samples-console-opentelemetry-noagent/build.gradle.kts index f5d14dc2c38..563afb4209a 100644 --- a/sentry-samples/sentry-samples-console-opentelemetry-noagent/build.gradle.kts +++ b/sentry-samples/sentry-samples-console-opentelemetry-noagent/build.gradle.kts @@ -73,11 +73,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - maxParallelForks = 1 - - // Cap JVM args per test - minHeapSize = "128m" - maxHeapSize = "1g" filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-console-otlp/build.gradle.kts b/sentry-samples/sentry-samples-console-otlp/build.gradle.kts index 483f6bea799..3d25d1a58a3 100644 --- a/sentry-samples/sentry-samples-console-otlp/build.gradle.kts +++ b/sentry-samples/sentry-samples-console-otlp/build.gradle.kts @@ -76,11 +76,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - maxParallelForks = 1 - - // Cap JVM args per test - minHeapSize = "128m" - maxHeapSize = "1g" filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-console/build.gradle.kts b/sentry-samples/sentry-samples-console/build.gradle.kts index 79878ab9a08..8498a37654b 100644 --- a/sentry-samples/sentry-samples-console/build.gradle.kts +++ b/sentry-samples/sentry-samples-console/build.gradle.kts @@ -77,11 +77,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - maxParallelForks = 1 - - // Cap JVM args per test - minHeapSize = "128m" - maxHeapSize = "1g" filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-jul/build.gradle.kts b/sentry-samples/sentry-samples-jul/build.gradle.kts index 01e6a95f13d..06a44813388 100644 --- a/sentry-samples/sentry-samples-jul/build.gradle.kts +++ b/sentry-samples/sentry-samples-jul/build.gradle.kts @@ -68,11 +68,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - maxParallelForks = 1 - - // Cap JVM args per test - minHeapSize = "128m" - maxHeapSize = "1g" filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-log4j2/build.gradle.kts b/sentry-samples/sentry-samples-log4j2/build.gradle.kts index 005e1116528..e3e22609ae1 100644 --- a/sentry-samples/sentry-samples-log4j2/build.gradle.kts +++ b/sentry-samples/sentry-samples-log4j2/build.gradle.kts @@ -74,11 +74,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - maxParallelForks = 1 - - // Cap JVM args per test - minHeapSize = "128m" - maxHeapSize = "1g" filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-logback/build.gradle.kts b/sentry-samples/sentry-samples-logback/build.gradle.kts index 05f96c346a8..13adc92b810 100644 --- a/sentry-samples/sentry-samples-logback/build.gradle.kts +++ b/sentry-samples/sentry-samples-logback/build.gradle.kts @@ -68,11 +68,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - maxParallelForks = 1 - - // Cap JVM args per test - minHeapSize = "128m" - maxHeapSize = "1g" filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-spring-7/build.gradle.kts b/sentry-samples/sentry-samples-spring-7/build.gradle.kts index e3300cd2841..e1e8007f4ff 100644 --- a/sentry-samples/sentry-samples-spring-7/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-7/build.gradle.kts @@ -79,11 +79,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - maxParallelForks = 1 - - // Cap JVM args per test - minHeapSize = "128m" - maxHeapSize = "1g" filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-spring-boot-4-opentelemetry-noagent/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-4-opentelemetry-noagent/build.gradle.kts index 64ef57692c3..8f0edfa23e3 100644 --- a/sentry-samples/sentry-samples-spring-boot-4-opentelemetry-noagent/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-4-opentelemetry-noagent/build.gradle.kts @@ -92,11 +92,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - maxParallelForks = 1 - - // Cap JVM args per test - minHeapSize = "128m" - maxHeapSize = "1g" filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-spring-boot-4-opentelemetry/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-4-opentelemetry/build.gradle.kts index e12b960e0fd..4ee7f7b008a 100644 --- a/sentry-samples/sentry-samples-spring-boot-4-opentelemetry/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-4-opentelemetry/build.gradle.kts @@ -120,11 +120,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - maxParallelForks = 1 - - // Cap JVM args per test - minHeapSize = "128m" - maxHeapSize = "1g" filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-spring-boot-4-otlp/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-4-otlp/build.gradle.kts index 7329d5cc0ea..eb59243212f 100644 --- a/sentry-samples/sentry-samples-spring-boot-4-otlp/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-4-otlp/build.gradle.kts @@ -93,11 +93,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - maxParallelForks = 1 - - // Cap JVM args per test - minHeapSize = "128m" - maxHeapSize = "1g" filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-spring-boot-4-webflux/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-4-webflux/build.gradle.kts index a311b8a972e..db3b2a394f1 100644 --- a/sentry-samples/sentry-samples-spring-boot-4-webflux/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-4-webflux/build.gradle.kts @@ -72,11 +72,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - maxParallelForks = 1 - - // Cap JVM args per test - minHeapSize = "128m" - maxHeapSize = "1g" filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-spring-boot-4/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-4/build.gradle.kts index cdb33ecc675..ea336e39948 100644 --- a/sentry-samples/sentry-samples-spring-boot-4/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-4/build.gradle.kts @@ -94,11 +94,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - maxParallelForks = 1 - - // Cap JVM args per test - minHeapSize = "128m" - maxHeapSize = "1g" filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry-noagent/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry-noagent/build.gradle.kts index ed0af32b031..cf62a6811db 100644 --- a/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry-noagent/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry-noagent/build.gradle.kts @@ -93,12 +93,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - maxParallelForks = 1 - - // Cap JVM args per test - minHeapSize = "128m" - maxHeapSize = "1g" - filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/build.gradle.kts index d3d66c469b7..72e681f9a4d 100644 --- a/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/build.gradle.kts @@ -127,11 +127,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - maxParallelForks = 1 - - // Cap JVM args per test - minHeapSize = "128m" - maxHeapSize = "1g" filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-spring-boot-jakarta/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-jakarta/build.gradle.kts index ae3ef70ad70..5694a4d78cd 100644 --- a/sentry-samples/sentry-samples-spring-boot-jakarta/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-jakarta/build.gradle.kts @@ -97,16 +97,10 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - maxParallelForks = 1 - - // Cap JVM args per test - minHeapSize = "128m" - maxHeapSize = "1g" - filter { includeTestsMatching("io.sentry.systemtest*") } } -tasks.named("test").configure { +tasks.named("test").configure { require(this is Test) filter { excludeTestsMatching("io.sentry.systemtest.*") } diff --git a/sentry-samples/sentry-samples-spring-boot-opentelemetry-noagent/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-opentelemetry-noagent/build.gradle.kts index f1665f513d1..734da977d02 100644 --- a/sentry-samples/sentry-samples-spring-boot-opentelemetry-noagent/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-opentelemetry-noagent/build.gradle.kts @@ -115,12 +115,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - maxParallelForks = 1 - - // Cap JVM args per test - minHeapSize = "128m" - maxHeapSize = "1g" - filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-spring-boot-opentelemetry/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-opentelemetry/build.gradle.kts index 7c84875ca07..286ebb27818 100644 --- a/sentry-samples/sentry-samples-spring-boot-opentelemetry/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-opentelemetry/build.gradle.kts @@ -135,12 +135,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - maxParallelForks = 1 - - // Cap JVM args per test - minHeapSize = "128m" - maxHeapSize = "1g" - filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-spring-boot-webflux-jakarta/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-webflux-jakarta/build.gradle.kts index d5b04543576..137b65e8041 100644 --- a/sentry-samples/sentry-samples-spring-boot-webflux-jakarta/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-webflux-jakarta/build.gradle.kts @@ -69,17 +69,9 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - maxParallelForks = 1 - - // Cap JVM args per test - minHeapSize = "128m" - maxHeapSize = "1g" - filter { includeTestsMatching("io.sentry.systemtest*") } } -tasks.named("test").configure { - require(this is Test) - +tasks.named("test").configure { filter { excludeTestsMatching("io.sentry.systemtest.*") } } diff --git a/sentry-samples/sentry-samples-spring-boot-webflux/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-webflux/build.gradle.kts index b10b30737d8..38eed56d71a 100644 --- a/sentry-samples/sentry-samples-spring-boot-webflux/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-webflux/build.gradle.kts @@ -87,12 +87,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - maxParallelForks = 1 - - // Cap JVM args per test - minHeapSize = "128m" - maxHeapSize = "1g" - filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-spring-boot/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot/build.gradle.kts index cc535c725e1..9f6c34c0553 100644 --- a/sentry-samples/sentry-samples-spring-boot/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot/build.gradle.kts @@ -114,11 +114,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - maxParallelForks = 1 - - // Cap JVM args per test - minHeapSize = "128m" - maxHeapSize = "1g" filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-spring-jakarta/build.gradle.kts b/sentry-samples/sentry-samples-spring-jakarta/build.gradle.kts index 319431e71d2..2dcd526e7f3 100644 --- a/sentry-samples/sentry-samples-spring-jakarta/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-jakarta/build.gradle.kts @@ -81,16 +81,10 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - maxParallelForks = 1 - - // Cap JVM args per test - minHeapSize = "128m" - maxHeapSize = "1g" - filter { includeTestsMatching("io.sentry.systemtest*") } } -tasks.named("test").configure { +tasks.named("test").configure { require(this is Test) filter { excludeTestsMatching("io.sentry.systemtest.*") } diff --git a/sentry-samples/sentry-samples-spring/build.gradle.kts b/sentry-samples/sentry-samples-spring/build.gradle.kts index 446baf3a696..8e21c28734b 100644 --- a/sentry-samples/sentry-samples-spring/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring/build.gradle.kts @@ -80,11 +80,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - maxParallelForks = 1 - - // Cap JVM args per test - minHeapSize = "128m" - maxHeapSize = "1g" filter { includeTestsMatching("io.sentry.systemtest*") } } From f46bf811af827a1f071ef9252b39bf4a9023faad Mon Sep 17 00:00:00 2001 From: Sentry Github Bot Date: Wed, 6 May 2026 18:28:31 +0000 Subject: [PATCH 3/8] Format code --- .../build.gradle.kts | 1 - sentry-samples/sentry-samples-console-otlp/build.gradle.kts | 1 - sentry-samples/sentry-samples-console/build.gradle.kts | 1 - sentry-samples/sentry-samples-jul/build.gradle.kts | 1 - sentry-samples/sentry-samples-log4j2/build.gradle.kts | 1 - sentry-samples/sentry-samples-logback/build.gradle.kts | 1 - sentry-samples/sentry-samples-spring-7/build.gradle.kts | 1 - .../build.gradle.kts | 1 - .../build.gradle.kts | 1 - .../sentry-samples-spring-boot-4-otlp/build.gradle.kts | 1 - .../sentry-samples-spring-boot-4-webflux/build.gradle.kts | 1 - sentry-samples/sentry-samples-spring-boot-4/build.gradle.kts | 1 - .../build.gradle.kts | 1 - .../build.gradle.kts | 4 +--- sentry-samples/sentry-samples-spring-boot/build.gradle.kts | 1 - sentry-samples/sentry-samples-spring/build.gradle.kts | 1 - 16 files changed, 1 insertion(+), 18 deletions(-) diff --git a/sentry-samples/sentry-samples-console-opentelemetry-noagent/build.gradle.kts b/sentry-samples/sentry-samples-console-opentelemetry-noagent/build.gradle.kts index 563afb4209a..07e1a4b903e 100644 --- a/sentry-samples/sentry-samples-console-opentelemetry-noagent/build.gradle.kts +++ b/sentry-samples/sentry-samples-console-opentelemetry-noagent/build.gradle.kts @@ -73,7 +73,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-console-otlp/build.gradle.kts b/sentry-samples/sentry-samples-console-otlp/build.gradle.kts index 3d25d1a58a3..f834d0bb503 100644 --- a/sentry-samples/sentry-samples-console-otlp/build.gradle.kts +++ b/sentry-samples/sentry-samples-console-otlp/build.gradle.kts @@ -76,7 +76,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-console/build.gradle.kts b/sentry-samples/sentry-samples-console/build.gradle.kts index 8498a37654b..3a118b9fb8a 100644 --- a/sentry-samples/sentry-samples-console/build.gradle.kts +++ b/sentry-samples/sentry-samples-console/build.gradle.kts @@ -77,7 +77,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-jul/build.gradle.kts b/sentry-samples/sentry-samples-jul/build.gradle.kts index 06a44813388..1bbff8a3569 100644 --- a/sentry-samples/sentry-samples-jul/build.gradle.kts +++ b/sentry-samples/sentry-samples-jul/build.gradle.kts @@ -68,7 +68,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-log4j2/build.gradle.kts b/sentry-samples/sentry-samples-log4j2/build.gradle.kts index e3e22609ae1..8282ecbcf93 100644 --- a/sentry-samples/sentry-samples-log4j2/build.gradle.kts +++ b/sentry-samples/sentry-samples-log4j2/build.gradle.kts @@ -74,7 +74,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-logback/build.gradle.kts b/sentry-samples/sentry-samples-logback/build.gradle.kts index 13adc92b810..a410b5dec94 100644 --- a/sentry-samples/sentry-samples-logback/build.gradle.kts +++ b/sentry-samples/sentry-samples-logback/build.gradle.kts @@ -68,7 +68,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-spring-7/build.gradle.kts b/sentry-samples/sentry-samples-spring-7/build.gradle.kts index e1e8007f4ff..6d8658e9637 100644 --- a/sentry-samples/sentry-samples-spring-7/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-7/build.gradle.kts @@ -79,7 +79,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-spring-boot-4-opentelemetry-noagent/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-4-opentelemetry-noagent/build.gradle.kts index 8f0edfa23e3..84eaad8bc6e 100644 --- a/sentry-samples/sentry-samples-spring-boot-4-opentelemetry-noagent/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-4-opentelemetry-noagent/build.gradle.kts @@ -92,7 +92,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-spring-boot-4-opentelemetry/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-4-opentelemetry/build.gradle.kts index 4ee7f7b008a..5b638621c06 100644 --- a/sentry-samples/sentry-samples-spring-boot-4-opentelemetry/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-4-opentelemetry/build.gradle.kts @@ -120,7 +120,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-spring-boot-4-otlp/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-4-otlp/build.gradle.kts index eb59243212f..0731383b2d6 100644 --- a/sentry-samples/sentry-samples-spring-boot-4-otlp/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-4-otlp/build.gradle.kts @@ -93,7 +93,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-spring-boot-4-webflux/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-4-webflux/build.gradle.kts index db3b2a394f1..535690c780c 100644 --- a/sentry-samples/sentry-samples-spring-boot-4-webflux/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-4-webflux/build.gradle.kts @@ -72,7 +72,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-spring-boot-4/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-4/build.gradle.kts index ea336e39948..227fe94efc7 100644 --- a/sentry-samples/sentry-samples-spring-boot-4/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-4/build.gradle.kts @@ -94,7 +94,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/build.gradle.kts index 72e681f9a4d..e28d56b90c4 100644 --- a/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/build.gradle.kts @@ -127,7 +127,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-spring-boot-webflux-jakarta/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-webflux-jakarta/build.gradle.kts index 137b65e8041..161d1960553 100644 --- a/sentry-samples/sentry-samples-spring-boot-webflux-jakarta/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-webflux-jakarta/build.gradle.kts @@ -72,6 +72,4 @@ tasks.register("systemTest").configure { filter { includeTestsMatching("io.sentry.systemtest*") } } -tasks.named("test").configure { - filter { excludeTestsMatching("io.sentry.systemtest.*") } -} +tasks.named("test").configure { filter { excludeTestsMatching("io.sentry.systemtest.*") } } diff --git a/sentry-samples/sentry-samples-spring-boot/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot/build.gradle.kts index 9f6c34c0553..d4bbba68ae1 100644 --- a/sentry-samples/sentry-samples-spring-boot/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot/build.gradle.kts @@ -114,7 +114,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - filter { includeTestsMatching("io.sentry.systemtest*") } } diff --git a/sentry-samples/sentry-samples-spring/build.gradle.kts b/sentry-samples/sentry-samples-spring/build.gradle.kts index 8e21c28734b..bdf9694de1a 100644 --- a/sentry-samples/sentry-samples-spring/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring/build.gradle.kts @@ -80,7 +80,6 @@ tasks.register("systemTest").configure { outputs.upToDateWhen { false } - filter { includeTestsMatching("io.sentry.systemtest*") } } From 0d72252c6f438e8336313c534df623149ac34391 Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Wed, 6 May 2026 21:17:52 +0200 Subject: [PATCH 4/8] chore: Remove global test heap size configuration Let Gradle use its default heap settings for test JVMs rather than explicitly capping them. Co-Authored-By: Claude Opus 4.6 (1M context) --- build.gradle.kts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 949c7670ba4..9feb0c5764e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -107,10 +107,6 @@ allprojects { TestLogEvent.PASSED, TestLogEvent.FAILED ) - - // Cap JVM args per test - minHeapSize = "256m" - maxHeapSize = "1g" } withType().configureEach { options.compilerArgs.addAll(arrayOf("-Xlint:all", "-Werror", "-Xlint:-classfile", "-Xlint:-processing", "-Xlint:-try")) From 6fad2abd7d43e54e42efdd7949ea8e82bdd7c2cd Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Wed, 6 May 2026 22:00:53 +0200 Subject: [PATCH 5/8] chore(ci): Split build into parallel test and lint jobs Run tests + coverage and lint/verification as separate parallel CI jobs to reduce wall-clock time. Spotless will move to its own workflow. Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/build.yml | 58 +++++++++++++++++++++++++++++++++---- 1 file changed, 52 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 089913c9727..772ca4a8536 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,8 +10,8 @@ concurrency: cancel-in-progress: true jobs: - build: - name: Build Job ubuntu-latest - Java 17 + test: + name: Test runs-on: ubuntu-latest env: @@ -41,8 +41,16 @@ jobs: with: cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} - - name: Run Tests with coverage and Lint - run: make preMerge + - name: Run Tests + run: > + ./gradlew + test + testReleaseUnitTest + jacocoTestReport + koverXmlReportRelease + -x :sentry-spring-boot:test + -x :sentry-spring-boot-jakarta:test + -x :sentry-spring-boot-4:test - name: Upload coverage to Codecov uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # pin@v4 @@ -55,7 +63,7 @@ jobs: if: always() uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 with: - name: test-results-build + name: test-results-test path: | **/build/reports/* @@ -63,7 +71,7 @@ jobs: uses: phoenix-actions/test-reporting@f957cd93fc2d848d556fa0d03c57bc79127b6b5e # pin@v15 if: always() with: - name: JUnit Build + name: JUnit Test list-suites: 'failed' list-tests: 'failed' path: | @@ -71,3 +79,41 @@ jobs: reporter: java-junit output-to: step-summary fail-on-error: false + + lint: + name: Lint + runs-on: ubuntu-latest + + env: + GRADLE_ENCRYPTION_KEY: ${{ secrets.GRADLE_ENCRYPTION_KEY }} + + steps: + - name: Checkout Repo + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + submodules: 'recursive' + + - name: Setup Java Version + uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 + with: + distribution: 'temurin' + java-version: '17' + + # Workaround for https://github.com/gradle/actions/issues/21 to use config cache + - name: Cache buildSrc + uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5 + with: + path: buildSrc/build + key: build-logic-${{ hashFiles('buildSrc/src/**', 'buildSrc/build.gradle.kts','buildSrc/settings.gradle.kts') }} + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c + with: + cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} + + - name: Run Lint + run: > + ./gradlew + apiCheck + animalsnifferMain + lint From 72134fdd8094cc247d0ee4d1d4a166d93ca7f4d9 Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Wed, 6 May 2026 22:01:36 +0200 Subject: [PATCH 6/8] chore: Add per-module test heap and parallelism config Configure minHeapSize, maxHeapSize, and maxParallelForks for sentry-android-core, sentry-spring-boot, and sentry-spring-boot-4. Co-Authored-By: Claude Opus 4.6 (1M context) --- sentry-android-core/build.gradle.kts | 7 +++++++ sentry-spring-boot-4/build.gradle.kts | 7 +++++++ sentry-spring-boot/build.gradle.kts | 7 +++++++ 3 files changed, 21 insertions(+) diff --git a/sentry-android-core/build.gradle.kts b/sentry-android-core/build.gradle.kts index ffd42c7d4d7..2e7ca1cabbe 100644 --- a/sentry-android-core/build.gradle.kts +++ b/sentry-android-core/build.gradle.kts @@ -70,6 +70,13 @@ tasks.withType().configureEach { } } +tasks.withType().configureEach { + // Cap JVM args per test + minHeapSize = "256m" + maxHeapSize = "1g" + maxParallelForks = 2 +} + dependencies { api(projects.sentry) compileOnly(libs.jetbrains.annotations) diff --git a/sentry-spring-boot-4/build.gradle.kts b/sentry-spring-boot-4/build.gradle.kts index 3b0b3be8630..1553c9309dd 100644 --- a/sentry-spring-boot-4/build.gradle.kts +++ b/sentry-spring-boot-4/build.gradle.kts @@ -170,3 +170,10 @@ kotlin { freeCompilerArgs.add("-Xskip-metadata-version-check") } } + +tasks.withType().configureEach { + // Cap JVM args per test + minHeapSize = "256m" + maxHeapSize = "1g" + maxParallelForks = 2 +} diff --git a/sentry-spring-boot/build.gradle.kts b/sentry-spring-boot/build.gradle.kts index 74f5d7c87bb..9a0e1b5c0f6 100644 --- a/sentry-spring-boot/build.gradle.kts +++ b/sentry-spring-boot/build.gradle.kts @@ -136,3 +136,10 @@ tasks.jar { ) } } + +tasks.withType().configureEach { + // Cap JVM args per test + minHeapSize = "256m" + maxHeapSize = "1g" + maxParallelForks = 2 +} From 4805aae940c4042ad3509eb0c0b2d9532ca90392 Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Wed, 6 May 2026 22:23:15 +0200 Subject: [PATCH 7/8] chore: Remove maxParallelForks and add heap config for replay Remove maxParallelForks from per-module test config and add heap size settings to sentry-android-replay. Co-Authored-By: Claude Opus 4.6 (1M context) --- sentry-android-core/build.gradle.kts | 1 - sentry-android-replay/build.gradle.kts | 6 ++++++ sentry-spring-boot-4/build.gradle.kts | 1 - sentry-spring-boot/build.gradle.kts | 1 - 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sentry-android-core/build.gradle.kts b/sentry-android-core/build.gradle.kts index 2e7ca1cabbe..1e3c162cfea 100644 --- a/sentry-android-core/build.gradle.kts +++ b/sentry-android-core/build.gradle.kts @@ -74,7 +74,6 @@ tasks.withType().configureEach { // Cap JVM args per test minHeapSize = "256m" maxHeapSize = "1g" - maxParallelForks = 2 } dependencies { diff --git a/sentry-android-replay/build.gradle.kts b/sentry-android-replay/build.gradle.kts index 60d38c0ae0a..cf6514d8e2a 100644 --- a/sentry-android-replay/build.gradle.kts +++ b/sentry-android-replay/build.gradle.kts @@ -99,3 +99,9 @@ tasks.withType().configureEach { tasks.withType>().configureEach { compilerOptions.freeCompilerArgs.add("-opt-in=androidx.compose.ui.ExperimentalComposeUiApi") } + +tasks.withType().configureEach { + // Cap JVM args per test + minHeapSize = "256m" + maxHeapSize = "1g" +} diff --git a/sentry-spring-boot-4/build.gradle.kts b/sentry-spring-boot-4/build.gradle.kts index 1553c9309dd..66c6d0460d6 100644 --- a/sentry-spring-boot-4/build.gradle.kts +++ b/sentry-spring-boot-4/build.gradle.kts @@ -175,5 +175,4 @@ tasks.withType().configureEach { // Cap JVM args per test minHeapSize = "256m" maxHeapSize = "1g" - maxParallelForks = 2 } diff --git a/sentry-spring-boot/build.gradle.kts b/sentry-spring-boot/build.gradle.kts index 9a0e1b5c0f6..476ed388e3b 100644 --- a/sentry-spring-boot/build.gradle.kts +++ b/sentry-spring-boot/build.gradle.kts @@ -141,5 +141,4 @@ tasks.withType().configureEach { // Cap JVM args per test minHeapSize = "256m" maxHeapSize = "1g" - maxParallelForks = 2 } From d89823cd8ef9f750a1dd0d0511f65e46221127b1 Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Wed, 6 May 2026 22:45:50 +0200 Subject: [PATCH 8/8] chore: Apply spotless formatting Co-Authored-By: Claude Opus 4.6 (1M context) --- build.gradle.kts | 7 +++++++ sentry-android-core/build.gradle.kts | 6 +----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 9feb0c5764e..66a13c21f21 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -107,6 +107,9 @@ allprojects { TestLogEvent.PASSED, TestLogEvent.FAILED ) + // Cap JVM args per test + minHeapSize = "256m" + maxHeapSize = "1g" } withType().configureEach { options.compilerArgs.addAll(arrayOf("-Xlint:all", "-Werror", "-Xlint:-classfile", "-Xlint:-processing", "-Xlint:-try")) @@ -137,6 +140,10 @@ subprojects { isIncludeNoLocationClasses = true excludes = listOf("jdk.internal.*") } + + // Cap JVM args per test + minHeapSize = "256m" + maxHeapSize = "1g" } } } diff --git a/sentry-android-core/build.gradle.kts b/sentry-android-core/build.gradle.kts index 1e3c162cfea..097ceeaade7 100644 --- a/sentry-android-core/build.gradle.kts +++ b/sentry-android-core/build.gradle.kts @@ -70,11 +70,7 @@ tasks.withType().configureEach { } } -tasks.withType().configureEach { - // Cap JVM args per test - minHeapSize = "256m" - maxHeapSize = "1g" -} +tasks.withType().configureEach {} dependencies { api(projects.sentry)