name: CI
on:
push:
branches:
- main
pull_request:
jobs:
clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
components: clippy
target: wasm32-unknown-unknown
rustflags: -D warnings -D missing-docs
- name: Install Go
uses: actions/setup-go@v4
with:
go-version: '1.22.x'
- name: Run clippy for native
run: cargo clippy --all-features --all-targets
- name: Run clippy for wasm32
run: cargo clippy --all-features --target wasm32-unknown-unknown
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
rustflags: -D missing-docs
- name: Install Go
uses: actions/setup-go@v4
with:
go-version: '1.22.x'
- name: Run rustdoc check
env:
RUSTDOCFLAGS: -D warnings
run: cargo doc
fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
components: rustfmt
- name: Run fmt
run: cargo fmt -- --check
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Install Go
uses: actions/setup-go@v4
with:
go-version: '1.22.x'
- name: Run tests
run: cargo test --all-features
unused-deps:
runs-on: ubuntu-latest
name: unused dependencies
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Setup toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: nightly
- name: Install cargo-udeps
uses: taiki-e/install-action@v2
with:
tool: cargo-udeps
- name: Install Go
uses: actions/setup-go@v4
with:
go-version: '1.22.x'
- name: Check for unused dependencies
run: cargo udeps --all-features --all-targets
minimal-versions:
runs-on: ubuntu-latest
name: minimal versions of dependencies
steps:
- uses: actions/checkout@v4
- name: Setup toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Install cargo-minimal-versions
uses: taiki-e/install-action@v2
with:
tool: cargo-hack,cargo-minimal-versions
- name: Check minimal versions
run: cargo minimal-versions check --direct --all-features
msrv:
runs-on: ubuntu-latest
name: minimum supported rust version
steps:
- uses: actions/checkout@v4
- name: Setup toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Install cargo-minimal-versions
uses: taiki-e/install-action@v2
with:
tool: cargo-msrv
- name: Check MSRV
run: cargo msrv verify --all-features
required:
runs-on: ubuntu-latest
name: Required checks
if: ${{ !cancelled() }}
needs:
- clippy
- docs
- fmt
- test
- unused-deps
- minimal-versions
- msrv
steps:
- name: On failure
if: always() && contains(needs.*.result, 'failure')
run: exit 1