name: Push or PR on: [push, pull_request] env: CARGO_TERM_COLOR: always jobs: build_n_test: strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - name: rustfmt if: ${{ !cancelled() }} run: cargo fmt --all -- --check - name: check if: ${{ !cancelled() }} run: cargo check --verbose - name: clippy if: ${{ !cancelled() }} run: cargo clippy --all-targets --all-features -- -D warnings - name: Build if: ${{ !cancelled() }} run: | cargo build --verbose --tests --all-features cargo clean cargo build --verbose - name: Abort on error if: ${{ failure() }} run: echo "Some of jobs failed" && false semver: name: Check semver strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - name: Check semver if: ${{ !cancelled() }} uses: obi1kenobi/cargo-semver-checks-action@v2 - name: Abort on error if: ${{ failure() }} run: echo "Semver check failed" && false