Repository navigation
test(spring): [Sample Tests 42] Run each Spring Boot matrix version as its own Gradle task - #6382
Draft
runningcode wants to merge 1 commit into
Draft
runningcode wants to merge 1 commit into
runningcode wants to merge 1 commit into
Conversation
The Spring Boot matrix workflows tested each version by rewriting the catalog with perl, so a version could only be tested locally by editing the catalog, and every job recompiled the SDK and the suites. The new io.sentry.spring-boot-matrix plugin registers a test task per suite and version, e.g. integrationTestWebfluxBoot3_2_12. It reuses the suite's compiled classes on a runtime classpath resolved for that version, which swaps every org.springframework.boot artifact, the BOM included, as the catalog edit did. The resolved classpaths match the catalog edit's exactly. So the SDK and the suites now compile once, against the catalog's version, and only the runtime varies, which is how users run our jars. Suite code may only use APIs of the oldest version of its line. allIntegrationTestsBoot<version> runs one version's suites in a module, and allIntegrationTestsBoot<major> every version's. Each workflow runs the latter from the root in one job per Boot line, with --continue so a failing version doesn't hide the others. The versions live only in SpringBootVersions in build-logic. Resolves JAVA-802 Co-Authored-By: Claude <noreply@anthropic.com>
This was referenced Oct 26, 2026
Open
Open
Open
📲 Install BuildsAndroid
|
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR Stack (Sample Tests)
main)📜 Description
Replaces the perl edit of
gradle/libs.versions.tomlin the Spring Boot matrix workflows with a Gradle task per suite and Spring Boot version.io.sentry.spring-boot-matrixplugin in build-logic. A module lists its suites in aspringBootMatrixblock, and the plugin registers<suite>Boot<version>for each version inSpringBootVersions, e.g.integrationTestWebfluxBoot3_2_12.implementationandruntimeOnlyand swaps everyorg.springframework.bootartifact, the BOM included, to the version. That's what the catalog edit did.runAgentFixture, in both init modes.allIntegrationTestsBoot3_2_12runs one version's suites in a module, andallIntegrationTestsBoot3runs every version's../gradlew allIntegrationTestsBoot<N> --continuefrom the root. That picks up both the Boot module and its WAR module.--continuekeeps a failing version from hiding the others.SpringBootVersions. The WAR suites insentry-spring{,-jakarta,-7}use their Boot module's list.e2e_tests.mdcnow describes the tasks.What changes: the SDK and the suites compile once, against the catalog's version, and only the runtime classpath varies. That's how users run our published jars, and it can catch binary incompatibilities that recompiling hid. Suite code may only use APIs that exist in the oldest version of its line. The next PR brings back a check that the SDK's main code compiles against that version.
CI trade-off: there's one check per Boot line instead of one per version, and each job takes longer. In exchange, everything compiles once and there's a single version list. A failing version shows up in the test report.
💡 Motivation and Context
Closes #6379 (JAVA-802). A version could only be tested locally by editing the catalog by hand, and every matrix job recompiled the SDK and the suites. Now it's
./gradlew :sentry-spring-boot-jakarta:allIntegrationTestsBoot3_2_12.💚 How did you test it?
integrationTestat 3.2.12;sentry-springand the Boot 2integrationTestOtelNoAgentat 2.7.0;sentry-spring-7and the Boot 4integrationTestOtlpat 4.0.0.📝 Checklist
sendDefaultPIIis enabled.🔮 Next steps
#6383 compiles the SDK against each line's oldest version.
#skip-changelog
🤖 Generated with Claude Code