name: CI
on:
push:
branches: [ master ]
pull_request:
schedule:
- cron: '0 0 * * *'
env:
CARGO_TERM_COLOR: always
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust (stable)
uses: dtolnay/rust-toolchain@stable
- name: Restore cache
uses: Swatinem/rust-cache@v2
- name: Build (no default features)
run: cargo build --no-default-features
- name: Build (all features)
run: cargo build --all-features
test-locked:
name: Unit tests (locked deps)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust (stable)
uses: dtolnay/rust-toolchain@stable
- name: Restore cache
uses: Swatinem/rust-cache@v2
- name: Run tests
run: cargo test --all-features
test-latest:
name: Unit tests (latest deps)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust (stable)
uses: dtolnay/rust-toolchain@stable
- name: Update dependencies
run: cargo update
- name: Restore cache
uses: Swatinem/rust-cache@v2
- name: Run tests
run: cargo test --all-features
rustdoc:
name: Rustdoc
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust (nightly)
uses: dtolnay/rust-toolchain@nightly
- name: Restore cache
uses: Swatinem/rust-cache@v2
- name: Build docs
run: cargo rustdoc --all-features -- --cfg docsrs
rustfmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust (stable)
uses: dtolnay/rust-toolchain@stable
- name: Check formatting
run: cargo fmt --check
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust (stable)
uses: dtolnay/rust-toolchain@stable
- name: Restore cache
uses: Swatinem/rust-cache@v2
- name: Run Clippy
run: cargo clippy --all-features -- --deny warnings
msrv:
name: MSRV
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust (MSRV)
uses: dtolnay/rust-toolchain@1.83.0
- name: Restore cache
uses: Swatinem/rust-cache@v2
- name: Install cargo-msrv
run: cargo install cargo-msrv@0.18.1
- name: Check installed toolchain
run: |
test "$(rustc -V | cut -d" " -f2)" = "$(cargo msrv show --output-format minimal)"
- name: Verify MSRV
run: cargo msrv verify --all-features