diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index a6b00419..7cc2a4d0 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -2,6 +2,11 @@ # # SPDX-License-Identifier: GPL-2.0-or-later +# CI for the self-hosted, host-executor Podman runners (see container/). +# The runner image bakes in the Rust toolchain and all build dependencies, +# so jobs go straight to cargo — no apt/rustup setup steps (which also +# collided on the dpkg lock when jobs ran concurrently in the same runner). + name: CI on: @@ -17,86 +22,19 @@ jobs: 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 - + run: cargo fmt --all -- --check - name: clippy - run: | - export PATH="$HOME/.cargo/bin:$PATH" - cargo clippy --workspace --all-targets --all-features -- -D warnings + run: 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 - + run: cargo build --workspace --all-targets --locked - name: Test - run: | - export PATH="$HOME/.cargo/bin:$PATH" - cargo test --workspace --locked + run: cargo test --workspace --locked reuse: runs-on: ubuntu-latest