name: CI
on:
- push
- pull_request
env:
CARGO_TERM_COLOR: always
jobs:
test:
name: build_test
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
command: ["build", "test"]
profile: ["", "--release"]
features: ["", "--no-default-features", "--all-features"]
toolchain: ["stable", "nightly", "1.89"]
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.toolchain }}
default: true
- uses: actions-rs/cargo@v1
with:
command: ${{ matrix.command }}
args: ${{ matrix.features }} ${{ matrix.profile }}
test_min_versions:
name: build_test_minimal_versions
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
command: ["build", "test"]
profile: ["", "--release"]
features: ["", "--no-default-features", "--all-features"]
toolchain: ["nightly"]
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.toolchain }}
default: true
- uses: actions-rs/cargo@v1
with:
command: "update"
args: "-Z direct-minimal-versions"
- uses: actions-rs/cargo@v1
with:
command: ${{ matrix.command }}
args: ${{ matrix.features }} ${{ matrix.profile }}
clippy_check:
name: Linter (clippy)
runs-on: ubuntu-latest
permissions:
checks: write
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
components: clippy
default: true
- uses: actions-rs/clippy-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
args: --all-features --all-targets -- -D warnings
code_format:
name: Code Formatter (rustfmt)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
components: rustfmt
default: true
- uses: mbrobbel/rustfmt-check@0.5.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
sync_readme:
name: Sync README.md (cargo sync-readme)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: cargo install cargo-rdme
- run: ./gen_readme.sh
- run: git diff --exit-code
dead_doc_links:
name: Find dead doc links
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
default: true
- run: RUSTDOCFLAGS="-Dwarnings" cargo doc
semver_checks:
name: Check semver
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: obi1kenobi/cargo-semver-checks-action@v2
coverage:
name: Code Coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
default: true
- name: Install cargo-llvm-cov
uses: taiki-e/install-action@cargo-llvm-cov
- name: Generate code coverage
run: cargo llvm-cov --all-features --workspace --lcov --output-path lcov.info
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }} files: lcov.info
fail_ci_if_error: true
verbose: true