name: Continuous Integration
on:
push:
branches:
- main
paths-ignore:
- "**/README.md"
pull_request:
workflow_dispatch:
env:
CARGO_TERM_COLOR: always
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
jobs:
rust-checks:
name: Rust Checks
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
action:
- command: check
args: --all-targets
- command: test
args: --workspace
- command: fmt
args: --all -- --check
- command: clippy
args: --all-features --workspace -- -D warnings
- command: doc
args: --no-deps --all-features
steps:
- name: Checkout repository
uses: actions/checkout@v5
- name: Setup Rust
uses: dtolnay/rust-toolchain@v1
with:
toolchain: stable
components: rust-src, rustfmt, clippy
- name: Enable caching
uses: Swatinem/rust-cache@v2
- name: Run command
run: cargo ${{ matrix.action.command }} ${{ matrix.action.args }}
build-targets:
name: Build for Targets
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target:
- riscv32imac-unknown-none-elf - thumbv6m-none-eabi - thumbv7em-none-eabihf steps:
- name: Checkout repository
uses: actions/checkout@v5
- name: Setup Rust
uses: dtolnay/rust-toolchain@v1
with:
toolchain: stable
targets: ${{ matrix.target }}
- name: Enable caching
uses: Swatinem/rust-cache@v2
- name: Build library
run: cargo check --target ${{ matrix.target }}
security_audit:
name: Security Audit
runs-on: ubuntu-latest
permissions:
checks: write
steps:
- uses: actions/checkout@v5
- uses: rustsec/audit-check@v2.0.0
with:
token: ${{ secrets.GITHUB_TOKEN }}