Skip to content

Commit 4f9eb71

Browse files
committed
add(ci): detect public api breaking changes on pull requests
1 parent 89995d0 commit 4f9eb71

1 file changed

Lines changed: 26 additions & 2 deletions

File tree

.github/workflows/ci.yml

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,23 @@ jobs:
4949
- name: Run tests
5050
run: swift test --parallel -Xswiftc -warnings-as-errors
5151

52+
api-breakage:
53+
if: github.event_name == 'pull_request'
54+
runs-on: macos-26
55+
timeout-minutes: 30
56+
steps:
57+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
58+
with:
59+
persist-credentials: false
60+
fetch-depth: 0
61+
- uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
62+
with:
63+
path: .build
64+
key: macos-api-breakage-spm-${{ hashFiles('Package.resolved', 'Package.swift') }}
65+
restore-keys: macos-api-breakage-spm-
66+
- name: Diagnose API breaking changes
67+
run: swift package diagnose-api-breaking-changes "origin/${{ github.base_ref }}"
68+
5269
docs:
5370
runs-on: macos-26
5471
timeout-minutes: 20
@@ -66,18 +83,25 @@ jobs:
6683

6784
check:
6885
if: always()
69-
needs: [lint, test-macos, docs]
86+
needs: [lint, test-macos, api-breakage, docs]
7087
runs-on: ubuntu-latest
7188
timeout-minutes: 5
7289
steps:
7390
- name: Verify all jobs passed
7491
run: |
92+
api_ok=true
93+
if [[ "${{ needs.api-breakage.result }}" != "success" && \
94+
"${{ needs.api-breakage.result }}" != "skipped" ]]; then
95+
api_ok=false
96+
fi
7597
if [[ "${{ needs.lint.result }}" != "success" || \
7698
"${{ needs.test-macos.result }}" != "success" || \
77-
"${{ needs.docs.result }}" != "success" ]]; then
99+
"${{ needs.docs.result }}" != "success" || \
100+
"$api_ok" != "true" ]]; then
78101
echo "Required jobs failed:"
79102
echo " lint: ${{ needs.lint.result }}"
80103
echo " test-macos: ${{ needs.test-macos.result }}"
104+
echo " api-breakage: ${{ needs.api-breakage.result }}"
81105
echo " docs: ${{ needs.docs.result }}"
82106
exit 1
83107
fi

0 commit comments

Comments
 (0)