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 4b1c606bc6..f8c7dbbf35 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 6656e00e49..949c7670ba 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 f5d14dc2c3..563afb4209 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 483f6bea79..3d25d1a58a 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 79878ab9a0..8498a37654 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 01e6a95f13..06a4481338 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 005e111652..e3e22609ae 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 05f96c346a..13adc92b81 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 e3300cd284..e1e8007f4f 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 64ef57692c..8f0edfa23e 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 e12b960e0f..4ee7f7b008 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 7329d5cc0e..eb59243212 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 a311b8a972..db3b2a394f 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 cdb33ecc67..ea336e3994 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 ed0af32b03..cf62a6811d 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 d3d66c469b..72e681f9a4 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 ae3ef70ad7..5694a4d78c 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 f1665f513d..734da977d0 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 7c84875ca0..286ebb2781 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 d5b0454357..137b65e804 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 b10b30737d..38eed56d71 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 cc535c725e..9f6c34c055 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 319431e71d..2dcd526e7f 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 446baf3a69..8e21c28734 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 563afb4209..07e1a4b903 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 3d25d1a58a..f834d0bb50 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 8498a37654..3a118b9fb8 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 06a4481338..1bbff8a356 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 e3e22609ae..8282ecbcf9 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 13adc92b81..a410b5dec9 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 e1e8007f4f..6d8658e963 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 8f0edfa23e..84eaad8bc6 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 4ee7f7b008..5b638621c0 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 eb59243212..0731383b2d 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 db3b2a394f..535690c780 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 ea336e3994..227fe94efc 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 72e681f9a4..e28d56b90c 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 137b65e804..161d196055 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 9f6c34c055..d4bbba68ae 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 8e21c28734..bdf9694de1 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 949c7670ba..9feb0c5764 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 089913c972..772ca4a853 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 ffd42c7d4d..2e7ca1cabb 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 3b0b3be863..1553c9309d 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 74f5d7c87b..9a0e1b5c0f 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 2e7ca1cabb..1e3c162cfe 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 60d38c0ae0..cf6514d8e2 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 1553c9309d..66c6d0460d 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 9a0e1b5c0f..476ed388e3 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 9feb0c5764..66a13c21f2 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 1e3c162cfe..097ceeaade 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)