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 diff --git a/build.gradle.kts b/build.gradle.kts index 6656e00e49a..66a13c21f21 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -107,10 +107,9 @@ allprojects { TestLogEvent.PASSED, TestLogEvent.FAILED ) - - // Cap JVM args per test - minHeapSize = "256m" - maxHeapSize = "2g" + // Cap JVM args per test + minHeapSize = "256m" + maxHeapSize = "1g" } withType().configureEach { options.compilerArgs.addAll(arrayOf("-Xlint:all", "-Werror", "-Xlint:-classfile", "-Xlint:-processing", "-Xlint:-try")) @@ -141,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 ffd42c7d4d7..097ceeaade7 100644 --- a/sentry-android-core/build.gradle.kts +++ b/sentry-android-core/build.gradle.kts @@ -70,6 +70,8 @@ tasks.withType().configureEach { } } +tasks.withType().configureEach {} + dependencies { api(projects.sentry) compileOnly(libs.jetbrains.annotations) 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-samples/sentry-samples-console-opentelemetry-noagent/build.gradle.kts b/sentry-samples/sentry-samples-console-opentelemetry-noagent/build.gradle.kts index f5d14dc2c38..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,12 +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..f834d0bb503 100644 --- a/sentry-samples/sentry-samples-console-otlp/build.gradle.kts +++ b/sentry-samples/sentry-samples-console-otlp/build.gradle.kts @@ -76,12 +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..3a118b9fb8a 100644 --- a/sentry-samples/sentry-samples-console/build.gradle.kts +++ b/sentry-samples/sentry-samples-console/build.gradle.kts @@ -77,12 +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..1bbff8a3569 100644 --- a/sentry-samples/sentry-samples-jul/build.gradle.kts +++ b/sentry-samples/sentry-samples-jul/build.gradle.kts @@ -68,12 +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..8282ecbcf93 100644 --- a/sentry-samples/sentry-samples-log4j2/build.gradle.kts +++ b/sentry-samples/sentry-samples-log4j2/build.gradle.kts @@ -74,12 +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..a410b5dec94 100644 --- a/sentry-samples/sentry-samples-logback/build.gradle.kts +++ b/sentry-samples/sentry-samples-logback/build.gradle.kts @@ -68,12 +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..6d8658e9637 100644 --- a/sentry-samples/sentry-samples-spring-7/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-7/build.gradle.kts @@ -79,12 +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..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,12 +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..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,12 +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..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,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-4-webflux/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-4-webflux/build.gradle.kts index a311b8a972e..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,12 +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..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,12 +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..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,12 +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..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 @@ -69,17 +69,7 @@ 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) - - filter { excludeTestsMatching("io.sentry.systemtest.*") } -} +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..d4bbba68ae1 100644 --- a/sentry-samples/sentry-samples-spring-boot/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot/build.gradle.kts @@ -114,12 +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..bdf9694de1a 100644 --- a/sentry-samples/sentry-samples-spring/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring/build.gradle.kts @@ -80,12 +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*") } } diff --git a/sentry-spring-boot-4/build.gradle.kts b/sentry-spring-boot-4/build.gradle.kts index 3b0b3be8630..66c6d0460d6 100644 --- a/sentry-spring-boot-4/build.gradle.kts +++ b/sentry-spring-boot-4/build.gradle.kts @@ -170,3 +170,9 @@ kotlin { freeCompilerArgs.add("-Xskip-metadata-version-check") } } + +tasks.withType().configureEach { + // Cap JVM args per test + minHeapSize = "256m" + maxHeapSize = "1g" +} diff --git a/sentry-spring-boot/build.gradle.kts b/sentry-spring-boot/build.gradle.kts index 74f5d7c87bb..476ed388e3b 100644 --- a/sentry-spring-boot/build.gradle.kts +++ b/sentry-spring-boot/build.gradle.kts @@ -136,3 +136,9 @@ tasks.jar { ) } } + +tasks.withType().configureEach { + // Cap JVM args per test + minHeapSize = "256m" + maxHeapSize = "1g" +} 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()