# SPDX-FileCopyrightText: 2026 Stan Grams # # SPDX-License-Identifier: GPL-2.0-or-later name: CI on: push: branches: [main] pull_request: env: CARGO_TERM_COLOR: always jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install system dependencies run: | sudo apt-get update sudo apt-get install -y --no-install-recommends \ build-essential pkg-config cmake clang libclang-dev \ libopus-dev libasound2-dev libsoapysdr-dev - name: Set up Rust run: | export PATH="$HOME/.cargo/bin:$PATH" if ! command -v rustup >/dev/null 2>&1; then curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \ | sh -s -- -y --profile minimal fi rustup toolchain install stable --profile minimal \ --component rustfmt --component clippy rustup default stable - name: Cache cargo uses: actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git target key: cargo-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }} restore-keys: cargo-${{ runner.os }}- - name: rustfmt run: | export PATH="$HOME/.cargo/bin:$PATH" cargo fmt --all -- --check - name: clippy run: | export PATH="$HOME/.cargo/bin:$PATH" cargo clippy --workspace --all-targets --all-features -- -D warnings test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install system dependencies run: | sudo apt-get update sudo apt-get install -y --no-install-recommends \ build-essential pkg-config cmake clang libclang-dev \ libopus-dev libasound2-dev libsoapysdr-dev - name: Set up Rust run: | export PATH="$HOME/.cargo/bin:$PATH" if ! command -v rustup >/dev/null 2>&1; then curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \ | sh -s -- -y --profile minimal fi rustup toolchain install stable --profile minimal rustup default stable - name: Cache cargo uses: actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git target key: cargo-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }} restore-keys: cargo-${{ runner.os }}- - name: Build run: | export PATH="$HOME/.cargo/bin:$PATH" cargo build --workspace --all-targets --locked - name: Test run: | export PATH="$HOME/.cargo/bin:$PATH" cargo test --workspace --locked reuse: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: REUSE compliance uses: fsfe/reuse-action@v5