From dcbba2cd2aa8dead1c3851ec916ca2b37c1c9784 Mon Sep 17 00:00:00 2001 From: Austin Schaefer Date: Fri, 21 Aug 2026 13:05:33 +0200 Subject: [PATCH] Fix CI to use rust-ci runner, matching sporah's workflow pattern Switches from the docker/rust:1-bookworm container back to the rust-ci runner label, and adopts sporah's build/test/audit job split with cargo registry + sccache caching. Keeps feedsignal's workspace-specific checks (native crates, web crate server/wasm-client features) and adds clippy + cargo audit, which were previously missing. --- .forgejo/workflows/ci.yml | 67 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 63 insertions(+), 4 deletions(-) diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml index 72d4cab..5101a48 100644 --- a/.forgejo/workflows/ci.yml +++ b/.forgejo/workflows/ci.yml @@ -7,22 +7,47 @@ on: jobs: check: - runs-on: docker - container: docker.io/library/rust:1-bookworm + runs-on: rust-ci steps: - uses: actions/checkout@v4 - - name: Cache cargo registry and target dir + - name: Cache cargo registry and build artifacts uses: actions/cache@v4 with: path: | ~/.cargo/registry + ~/.cargo/git target - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + key: cargo-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }} + restore-keys: | + cargo-${{ runner.os }}- + + - name: Cache sccache compilation objects + uses: actions/cache@v4 + with: + path: /root/.cache/sccache + # Not keyed to Cargo.lock: sccache caches individual compiler + # invocations by content hash, so it should accumulate across + # dependency bumps rather than reset like the target/ cache above. + key: sccache-${{ runner.os }}-${{ github.run_id }} + restore-keys: | + sccache-${{ runner.os }}- - name: Add wasm target run: rustup target add wasm32-unknown-unknown + - name: Format check + run: cargo fmt --check + + - name: Clippy (native crates) + run: cargo clippy --workspace --exclude feedsignal-web --all-targets -- -D warnings + + - name: Clippy (web crate, server) + run: cargo clippy -p feedsignal-web --no-default-features --features server --all-targets -- -D warnings + + - name: Clippy (web crate, wasm client) + run: cargo clippy -p feedsignal-web --no-default-features --features web --target wasm32-unknown-unknown -- -D warnings + - name: Check native crates run: cargo check --workspace --exclude feedsignal-web @@ -32,5 +57,39 @@ jobs: - name: Check web crate (wasm client) run: cargo check -p feedsignal-web --no-default-features --features web --target wasm32-unknown-unknown + test: + needs: check + runs-on: rust-ci + steps: + - uses: actions/checkout@v4 + + - name: Cache cargo registry and build artifacts + uses: actions/cache@v4 + with: + path: | + ~/.cargo/registry + ~/.cargo/git + target + key: cargo-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }} + restore-keys: | + cargo-${{ runner.os }}- + + - name: Cache sccache compilation objects + uses: actions/cache@v4 + with: + path: /root/.cache/sccache + key: sccache-${{ runner.os }}-${{ github.run_id }} + restore-keys: | + sccache-${{ runner.os }}- + - name: Test run: cargo test --workspace --exclude feedsignal-web + + audit: + needs: test + runs-on: rust-ci + steps: + - uses: actions/checkout@v4 + + - name: cargo audit + run: cargo audit