name: Rust CI
on:
push:
pull_request:
permissions: {}
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
jobs:
check:
name: Check - ${{ matrix.name }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- name: Check Formatting
task: fmt --check
- name: Lint
task: lint
- name: Build Documentation
task: docsrs
steps:
- name: Checkout Repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd with:
persist-credentials: false
- name: Setup Build Cache
uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4
- name: Setup cargo-rbmt
uses: ./.github/actions/setup-rbmt
- name: Run ${{ matrix.task }}
run: cargo rbmt ${{ matrix.task }}
test:
name: Test - ${{ matrix.name }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- name: Stable Toolchain + Minimal Lockfile
toolchain: stable
lockfile: minimal
- name: Stable Toolchain + Recent Lockfile
toolchain: stable
lockfile: recent
- name: MSRV Toolchain + Minimal Lockfile
toolchain: msrv
lockfile: minimal
steps:
- name: Checkout Repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd with:
persist-credentials: false
- name: Setup Build Cache
uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4
- name: Setup cargo-rbmt
uses: ./.github/actions/setup-rbmt
- name: Run Tests
run: cargo rbmt test --toolchain ${{ matrix.toolchain }} --lockfile ${{ matrix.lockfile }}
test-no-std:
name: Test - no-std, MSRV toolchain, Minimal Lockfile
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd with:
persist-credentials: false
- name: Setup Build Cache
uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4
- name: Setup cargo-rbmt
uses: ./.github/actions/setup-rbmt
- name: Add no_std Target
run: rustup target add thumbv7m-none-eabi --toolchain 1.74.0
- name: Run no_std Tests
run: cargo rbmt test --toolchain msrv --lockfile minimal