build(api): add japicmp binary-compatibility gate vs v1.6.5 (E1)#84
Merged
Conversation
Tracks the public surface against the last published release on every pull request so an unintended binary break is caught before merge — the foundation Track E of the v1.6.6 Maven Central debut depends on. Changes: - pom.xml: new `japicmp` profile carrying japicmp-maven-plugin and a profile-local JitPack repository (downstream consumers do NOT inherit it). Pinned versions in properties: japicmp.version=0.23.1, japicmp.baseline=v1.6.5. The plugin binds its cmp goal to the verify phase, so `mvn -P japicmp verify` runs the diff after building the jar. - .github/workflows/ci.yml: new `binary-compat` job, PR-only, runs `mvnw -DskipTests -P japicmp verify -pl .` after the guards job and uploads the report directory as an artifact. - CHANGELOG.md: opens a `## v1.6.6 — Planned` entry with a Build subsection documenting the gate, its phased policy (binary breaks fail the build, source breaks reported only), and the local invocation. Policy: - breakBuildOnBinaryIncompatibleModifications=true - breakBuildOnSourceIncompatibleModifications=false (phased; will tighten) - onlyModified=true; reports HTML/MD/XML/diff under target/japicmp/ Local verification: `mvnw -P japicmp verify -pl .` against develop returns `No changes. Semantic versioning suggestion: 0.0.1` — develop is bit-identical to v1.6.5 at the jar level, as expected fresh after the release. The next public-surface PR will exercise the gate end-to-end.
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.
Summary
Wires up Track E1 (japicmp baseline=v1.6.5) from the 1.6.5→1.7 readiness taskboard — the foundation 1.6.6's Maven Central debut and 1.6.7's dependency cleanup depend on.
pom.xml— newjapicmpprofile carryingjapicmp-maven-pluginand a profile-local JitPack<repositories>(downstream consumers do not inherit it). Versions pinned in properties:japicmp.version=0.23.1,japicmp.baseline=v1.6.5. Plugin binds itscmpgoal to theverifyphase..github/workflows/ci.yml— newbinary-compatjob, PR-only, runs after the guards job. Uploads the report directory as an artifact for inspection on red runs.CHANGELOG.md— opens## v1.6.6 — Plannedwith aBuildsubsection.Why
Without a structural binary-compatibility gate we cannot promise zero breaking — which is the whole point of the v1.6.6 Maven Central debut. JitPack consumers tolerate accidental breaks (you bump and find out); Central consumers do not, and
japicmp-maven-pluginagainst a published baseline is the standard fix.Pinning the baseline at v1.6.5 specifically: it's the freshest published artifact, ships through JitPack today, and is the canonical "what users currently see" surface. Each subsequent patch release will keep
<japicmp.baseline>pointed at the previous public tag.Policy
breakBuildOnBinaryIncompatibleModificationsbreakBuildOnSourceIncompatibleModificationsonlyModifiedincludeSyntheticReports land in
target/japicmp/as HTML / MD / XML / diff. The CI artifact upload is the audit trail for any red run.Verification
Local run against current develop:
Report contents:
(Expected — develop is bit-identical to v1.6.5 at the jar level fresh after the release; the cut-release-script fix-up PR-83 only touched
scripts/anddocs/.) The next PR that touches the public surface will exercise the gate end-to-end.Guards re-run after pom changes:
Test plan
mvn -P japicmp verifyzelёный locallybinary-compatjob is the live gate