name: build
on:
push:
pull_request:
types: [opened]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- uses: j178/prek-action@v2
with:
extra-args: cargo-fmt
checks:
needs: fmt
strategy:
fail-fast: false
matrix:
hook: [cargo-check, cargo-clippy, cargo-build, cargo-test, cargo-doc]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- uses: Swatinem/rust-cache@v2
- uses: j178/prek-action@v2
with:
extra-args: ${{ matrix.hook }}
audit:
needs: fmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: taiki-e/cache-cargo-install-action@v2
with:
tool: cargo-audit
- run: cargo audit
readme:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: taiki-e/cache-cargo-install-action@v2
with:
tool: cargo-onedoc
- name: Check README
run: cargo onedoc --check