name: CI on: pull_request: merge_group: workflow_dispatch: permissions: contents: read concurrency: group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: test: name: Test runs-on: ${{ matrix.os }} strategy: matrix: include: - os: ubuntu-latest - os: macos-latest - os: windows-latest steps: - uses: actions/checkout@v4 with: submodules: true - run: cargo test msrv: name: MSRV runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: true - run: rustup update 1.60.0 && rustup default 1.60.0 - run: cargo test format: name: Format runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v6 with: persist-credentials: false - name: Install rust toolchain uses: dtolnay/rust-toolchain@stable with: components: rustfmt - name: Check formatting run: cargo fmt --all -- --check clippy: name: Clippy runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v6 with: persist-credentials: false - name: Install rust toolchain uses: dtolnay/rust-toolchain@stable with: components: clippy - run: cargo clippy --all-targets -- -D warnings semver: name: Check semver compatibility runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v6 with: persist-credentials: false - name: Check semver uses: obi1kenobi/cargo-semver-checks-action@v2 audit: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: EmbarkStudios/cargo-deny-action@v2