Repository navigation
build: check binary compatibility against published releases - #465
Conversation
|
Thanks for adding this! I'll review it. |
dcae21e to
702d8fb
Compare
maxlambrecht
left a comment
There was a problem hiding this comment.
Thanks for adding this! Looks good to me.
@rturner3, could you take a look as well?
I’ll restore the original void scheduleRetry(Runnable) signature in a separate PR and move the boolean implementation to tryScheduleRetry(Runnable). Since this hasn’t been released, we can preserve compatibility before the next release and remove the exclusion once the fix lands. |
Compare core and provider APIs with the latest stable Maven Central release during check. Add TestKit coverage, including the published 0.8.14 to 0.8.15 builder regression, and document baseline overrides and intentional changes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Ruchir Jain <122954065+jainruchir@users.noreply.github.com>
702d8fb to
dbf9f4e
Compare
The original scheduleRetry signature was restored in spiffe#469. Remove its temporary exclusion and outdated breaking-change changelog entry. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Ruchir Jain <122954065+jainruchir@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Ruchir Jain <122954065+jainruchir@users.noreply.github.com>
Summary
Closes #463.
Add a japicmp binary compatibility gate for
java-spiffe-coreandjava-spiffe-provider, wired intocheckand therefore the existing CI builds. This catches changes that still compile from source but break previously compiled consumers, such as the builder return-type change in #377.major.minor.patchrelease from Maven Central automatically, with-PbaselineVersion=...for maintenance branches.build/reports/japicmp/.-PbaselineVersion=noneexplicitly opts out for a first-ever release.Compatibility issue caught and restored
The check caught an unreleased binary-incompatible change to
RetryHandler.scheduleRetry(Runnable)fromvoidtoboolean. This signature change was reverted in #469: the originalvoid scheduleRetry(Runnable)API was restored, and the boolean-returning implementation moved totryScheduleRetry(Runnable). The temporary method exclusion and breaking-change changelog entry have therefore been removed from this PR.The compatibility gate now checks this method without an exclusion.
Testing
On macOS arm64:
./gradlew buildon JDK 25, including 608 existing unit tests and nine new Gradle TestKit tests. Its TestKit suite and both module compatibility tasks also passed on JDK 17 and JDK 21 with Gradle 9.6.1.--rerun-taskson JDK 25 using the updated Gradle 9.8.0 wrapper; all passed.X509SourceOptionsBuilderand changedbuilder()signature fail the gate.Local commands (no SPIRE agent required):
./gradlew :java-spiffe-core:japicmp :java-spiffe-provider:japicmp ./gradlew binaryCompatibilityTest ./gradlew binaryCompatibilityTest --tests '*detectsPublishedBuilderRegressionFrom0814To0815'SPIRE integration tests were not run; this changes build verification only.