name: Build
on:
push:
pull_request:
workflow_call:
jobs:
check:
name: check
runs-on: macos-latest
steps:
- uses: actions/checkout@v6
- name: setup rust
uses: dtolnay/rust-toolchain@stable
with:
components: clippy, rustfmt
- run: cargo check --all-targets
lint:
name: lint
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
cargo-cmd:
- fmt --all -- --check
- clippy --all-targets --all-features -- -D warnings
steps:
- uses: actions/checkout@v6
- name: setup rust
uses: dtolnay/rust-toolchain@stable
with:
components: clippy, rustfmt
- run: cargo ${{ matrix.cargo-cmd }}
test:
name: test
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
rust: [stable, nightly]
continue-on-error: ${{ matrix.rust == 'nightly' }}
steps:
- uses: actions/checkout@v6
- name: setup rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.rust }}
- name: cargo test
run: cargo test --all
docs:
name: docs
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-apple-darwin
- name: Build documentation
run: cargo doc --no-deps --target aarch64-apple-darwin
audit:
name: cargo audit
runs-on: macos-latest
steps:
- uses: actions/checkout@v6
- uses: taiki-e/install-action@cargo-audit
- run: cargo audit
publish-dry-run:
name: publish dry-run
needs: [check, lint, test, docs, audit]
runs-on: macos-latest
steps:
- uses: actions/checkout@v6
- name: setup rust
uses: dtolnay/rust-toolchain@stable
- name: cargo publish --dry-run
run: cargo publish --dry-run