From 58a38308cd83909b67c217203d4bfa9b0b9bfb5d Mon Sep 17 00:00:00 2001 From: Nikolay Govorov Date: Sun, 29 Mar 2026 20:36:38 +0100 Subject: Eliminates unnecessary rebuilds on CI --- .github/workflows/build.yml | 19 +++++++++++++------ README.md | 2 +- tests/smoke/run-local.sh | 10 ++++------ 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5f65ced..0486df0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -33,9 +33,6 @@ jobs: - name: Check formatting run: cargo fmt --all --check - - name: Run clippy - run: cargo clippy --all-targets --all-features -- -D warnings - build: name: Build (${{ matrix.arch }}) runs-on: ${{ matrix.runner }} @@ -62,6 +59,7 @@ jobs: passphrase: ${{ secrets.GPG_PASSPHRASE }} gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} + - run: cargo clippy --all-targets --all-features --release -- -D warnings - run: cargo build --release - run: cargo test --all-features --release --locked @@ -106,6 +104,11 @@ jobs: name: packages-${{ matrix.arch }} path: dist/* + - uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 + with: + name: binary-${{ matrix.arch }} + path: target/release/recluse + smoke: name: Smoke tests runs-on: ubuntu-24.04 @@ -114,11 +117,15 @@ jobs: steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: dtolnay/rust-toolchain@4be9e76fd7c4901c61fb841f559994984270fce7 # stable - - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2 + - uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0 + with: + name: binary-amd64 + path: target/release/ - name: Run smoke tests against local instance - run: ./tests/smoke/run-local.sh + run: | + chmod +x target/release/recluse + ./tests/smoke/run-local.sh publish: name: Publish nightly build diff --git a/README.md b/README.md index c01f119..d8ed87f 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ is **not** intended for production use. sudo apt install curl gnupg curl -fsSL https://github.com/dimidiumlabs/recluse/releases/download/nightly/public.gpg | sudo gpg --dearmor -o /usr/share/keyrings/recluse.gpg -echo "deb [signed-by=/usr/share/keyrings/recluse.gpg] https://recluse.hel1.your-objectstorage.com/apt/ nightly main" | sudo tee /etc/apt/sources.list.d/recluse.list +echo "deb [signed-by=/usr/share/keyrings/recluse.gpg] https://dimidiumlabs.fsn1.your-objectstorage.com/apt/ nightly main" | sudo tee /etc/apt/sources.list.d/recluse.list sudo apt update && sudo apt install recluse sudo systemctl enable --now recluse diff --git a/tests/smoke/run-local.sh b/tests/smoke/run-local.sh index 1e0676e..e675abc 100755 --- a/tests/smoke/run-local.sh +++ b/tests/smoke/run-local.sh @@ -2,7 +2,8 @@ # Copyright (c) 2026 Nikolay Govorov # SPDX-License-Identifier: AGPL-3.0-or-later -# Builds recluse, starts it in a temporary directory, runs smoke tests, cleans up. +# Starts recluse in a temporary directory, runs smoke tests, cleans up. +# Expects a prebuilt binary at target/release/recluse (run `cargo build --release` first). # # Usage: # ./tests/smoke/run-local.sh # default port 2025 @@ -10,6 +11,7 @@ set -euo pipefail +BIN="target/release/recluse" PORT="${RECLUSE_PORT:-2025}" BASE_URL="http://127.0.0.1:${PORT}" @@ -17,10 +19,6 @@ TMPDIR="$(mktemp -d)" LOGFILE="$TMPDIR/recluse.log" trap 'kill "$PID" 2>/dev/null; wait "$PID" 2>/dev/null; rm -rf "$TMPDIR"' EXIT -# Build -echo "Building recluse..." -cargo build --release -p recluse - # Write minimal config cat > "$TMPDIR/recluse.toml" <"$LOGFILE" 2>&1 & +"$BIN" --config="$TMPDIR/recluse.toml" >"$LOGFILE" 2>&1 & PID=$! # Wait for index to load (log shows "index refreshed" for each backend) -- Gilti