# This workflow makes sure that a pull request does not make any incompatible changes # to the public API of Gson name: Check API compatibility on: pull_request jobs: check-api-compatibility: runs-on: ubuntu-latest steps: - name: Checkout old version uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: ref: ${{ github.event.pull_request.base.sha }} path: 'gson-old-japicmp' - name: Set up JDK 11 uses: actions/setup-java@387ac29b308b003ca37ba93a6cab5eb57c8f5f93 # v4.0.0 with: distribution: 'temurin' java-version: '11' cache: 'maven' - name: Build old version run: | cd gson-old-japicmp # Set dummy version mvn --batch-mode --no-transfer-progress org.codehaus.mojo:versions-maven-plugin:2.11.0:set -DnewVersion=JAPICMP-OLD # Install artifacts with dummy version in local repository; used later by Maven plugin for comparison mvn --batch-mode --no-transfer-progress install -DskipTests - name: Checkout new version uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Check API compatibility id: check-compatibility run: | mvn --batch-mode --fail-at-end --no-transfer-progress package japicmp:cmp -DskipTests - name: Upload API differences artifacts uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0 # Run on workflow success (in that case differences report might include added methods and classes) # or when API compatibility check failed if: success() || ( failure() && steps.check-compatibility.outcome == 'failure' ) with: name: api-differences path: | **/japicmp/default-cli.html **/japicmp/default-cli.diff # Plugin should always have created report files (though they might be empty) if-no-files-found: error