Skip to content

Commit

Permalink
Add SemVer compatibility checks
Browse files Browse the repository at this point in the history
This integrates the cargo-semver-checks tool in the CI to check for
SemVer compatibility as per the Cargo reference
(https://doc.rust-lang.org/cargo/reference/semver.html).

The cargo-public-api tool is a viable alternative to
cargo-semver-checks, but I didn't choose it because its comparison
baseline needs to be stored in the repository and manually updated on
each change. For zenoh, the 1.0.0 revision will be the baseline for the
forseeable future.

This comes with a caveat though: cargo-semver-checks accepts a "release
type" argument which would be either patch or minor in zenoh's case. I
specified "patch" since I expect patch releases to be more common. If
minor API compatibility (as defined by the Cargo reference) are
expected, then the CI workflow would need to be manually adjusted at the
start and the end of the release cycle.
  • Loading branch information
fuzzypixelz committed Oct 21, 2024
1 parent 363e817 commit 86cedc5
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@ jobs:
- name: Install latest cargo-machete
uses: taiki-e/install-action@cargo-machete

- name: Install latest cargo-semver-checks
uses: taiki-e/install-action@cargo-semver-checks

- name: Code format check
run: cargo fmt --check -- --config "unstable_features=true,imports_granularity=Crate,group_imports=StdExternalCrate"

Expand Down Expand Up @@ -100,6 +103,9 @@ jobs:
- name: Check unused dependencies
run: cargo machete

- name: Check SemVer Compatibility
run: cargo semver-checks --verbose --default-features --baseline-rev 1.0.0 --package zenoh --release-type patch

test:
name: Unit tests on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
Expand Down

0 comments on commit 86cedc5

Please sign in to comment.