name: CI
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
workflow_call:
workflow_dispatch:
env:
CARGO_TERM_COLOR: always
CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS: "-C target-cpu=x86-64"
jobs:
fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- run: cargo fmt --all --check
clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo clippy --features bladerf1 --all-targets -- -D warnings
- run: cargo clippy --no-default-features --features bladerf1,xb100,xb200,xb300,tokio --all-targets -- -D warnings
clippy-nightly:
name: Clippy (nightly, early warning)
runs-on: ubuntu-latest
continue-on-error: true
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@nightly
with:
components: clippy
- uses: Swatinem/rust-cache@v2
- run: cargo clippy --features bladerf1 --all-targets -- -D warnings
- run: cargo clippy --no-default-features --features bladerf1,xb100,xb200,xb300,tokio --all-targets -- -D warnings
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo install cargo-audit && cargo audit
deny:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo install cargo-deny && cargo deny check
doc:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo doc --features bladerf1 --no-deps
wasm:
name: Check wasm32-unknown-unknown
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-unknown-unknown
- uses: Swatinem/rust-cache@v2
- run: cargo check --target wasm32-unknown-unknown --features bladerf1 --lib
build-examples:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: |
for manifest in examples/*/Cargo.toml; do
cargo build --manifest-path "$manifest"
done
cross:
name: Cross-compile (aarch64, windows-gnu)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-unknown-linux-gnu, x86_64-pc-windows-gnu
- uses: Swatinem/rust-cache@v2
- run: sudo apt-get update && sudo apt-get install -y gcc-aarch64-linux-gnu gcc-mingw-w64-x86-64
- run: cargo build --target aarch64-unknown-linux-gnu --features bladerf1 --lib
- run: cargo build --target x86_64-pc-windows-gnu --features bladerf1 --lib
conventional-commits:
name: Conventional Commits
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
- uses: ./.github/actions/git-cliff
- run: git-cliff --unreleased --output /dev/null
test-linux:
name: Unit Tests Linux
runs-on: ubuntu-latest
env:
RUST_BACKTRACE: full
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo build --features bladerf1
- run: cargo build --no-default-features --features bladerf1,tokio
- run: cargo test --lib
- run: cargo test --test unit
- run: cargo test --test public_api --features bladerf1
test-macos:
name: Unit Tests macOS
runs-on: macos-latest
env:
RUST_BACKTRACE: full
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo build --features bladerf1
- run: cargo test --lib
- run: cargo test --test unit
- run: cargo test --test public_api --features bladerf1
test-windows:
name: Unit Tests Windows
runs-on: windows-latest
env:
RUST_BACKTRACE: full
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo build --features bladerf1
- run: cargo test --lib
- run: cargo test --test unit
- run: cargo test --test public_api --features bladerf1