From 2ef9f80fc173dfc4e9891f2f587ec571125c56a4 Mon Sep 17 00:00:00 2001 From: Stan Grams Date: Sat, 18 Jul 2026 23:33:42 +0200 Subject: [PATCH] [chore](trx-rs): drop redundant CI setup steps for baked runner image The host-executor runners run jobs inside one container that already has the Rust toolchain and all build dependencies baked in, so the per-job `apt-get install` and rustup steps were redundant. Worse, with two jobs running concurrently in the same runner they collided on the dpkg lock ("Could not get lock /var/lib/dpkg/lock-frontend"). Remove the system-dependency, rustup and cache steps; jobs now run cargo directly. The cargo registry persists in the long-lived runner container. Assisted-By: Claude Code (claude-opus-4) Claude-Session: https://claude.ai/code/session_01NFpGtGTWUEYXLwZeZs2RAV Signed-off-by: Stan Grams --- .gitea/workflows/ci.yml | 80 +++++------------------------------------ 1 file changed, 9 insertions(+), 71 deletions(-) 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