name: CI
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
RUSTFLAGS: -Dwarnings
RUSTDOCFLAGS: -Dwarnings
jobs:
lint-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Enable caching
uses: actions/cache@v3
with:
path: |
~/.cargo/registry
~/.cargo/git
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Format
run: cargo fmt --check
- name: Lint
run: cargo clippy --all-targets --all
- name: Build
run: cargo build --all --verbose
- name: Run tests
run: cargo test --all --verbose
- name: Generate the documentation
run: cargo doc --all --no-deps --verbose
- name: Verify the MSRV (1.35)
run: |
rustup toolchain install 1.35.0 --profile minimal --no-self-update
cargo +1.35.0 test --all --verbose
- name: Build without std (bare-metal target)
run: |
rustup target add thumbv7em-none-eabi
cargo build --target thumbv7em-none-eabi --verbose
- name: Verify the crate packages cleanly
run: cargo publish --dry-run