name: Rust
on:
push:
pull_request:
workflow_dispatch:
env:
CARGO_TERM_COLOR: always
jobs:
fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup toolchain nightly
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
components: rustfmt
profile: minimal
- run: cargo +nightly fmt -- --check
clippy:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v3
- name: Setup toolchain stable
uses: actions-rs/toolchain@v1
with:
toolchain: stable
components: clippy
profile: minimal
- run: cargo clippy -- -D clippy::nursery -D clippy::perf -D clippy::pedantic
test:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v3
- name: Setup toolchain stable
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
- run: cargo test
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup toolchain stable
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
- run: cargo build --all-targets --release
msrv:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v3
- name: Setup toolchain stable
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
- name: Install cargo-msrv
uses: actions-rs/cargo@v1
with:
command: install
args: cargo-msrv
- run: cargo msrv verify
coverage:
runs-on: ubuntu-latest
needs: test
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Run cargo-tarpaulin
uses: actions-rs/tarpaulin@v0.1
with:
version: "0.15.0"
args: "-- --test-threads 1"
- name: Upload to codecov.io
uses: codecov/codecov-action@v3.1.4
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
verbose: true