name: ABI Compliance Check
on:
pull_request:
push:
workflow_dispatch:
jobs:
semver-check:
name: cargo-semver-checks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y libssl-dev pkg-config
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Install cargo-semver-checks
uses: taiki-e/install-action@cargo-semver-checks
- name: Determine baseline ref
id: baseline
run: |
PREV_TAG=$(git tag --list 'v*' --sort=-version:refname | grep -vx "${GITHUB_REF#refs/tags/}" | head -1 2>/dev/null || echo "")
if [ -z "$PREV_TAG" ]; then
echo "No previous release tag found. Skipping semver comparison."
echo "skip=true" >> "$GITHUB_OUTPUT"
else
echo "Comparing against $PREV_TAG"
echo "skip=false" >> "$GITHUB_OUTPUT"
echo "tag=$PREV_TAG" >> "$GITHUB_OUTPUT"
fi
- name: Run cargo-semver-checks
if: steps.baseline.outputs.skip == 'false'
run: cargo semver-checks --baseline-rev "${{ steps.baseline.outputs.tag }}"