name: e2e # Kept off the per-push gate deliberately — DESIGN.md §12. Runs on main, and on # pull requests that touch the crates whose seams these tests cover. on: push: branches: - main pull_request: paths: - 'crates/arr-e2e/**' - 'crates/arr-dl/**' - 'crates/arr-indexer/**' - 'crates/arr-meta/**' - 'crates/arr-probe/**' - 'crates/arr-api/**' - 'crates/arr-daemon/**' - '.gitea/workflows/e2e.yml' env: CARGO_TERM_COLOR: always CARGO_PROFILE_DEV_DEBUG: "0" jobs: e2e: runs-on: ubuntu-latest services: transmission: image: linuxserver/transmission:latest env: PUID: "1000" PGID: "1000" ports: - 9091:9091 steps: - uses: actions/checkout@v4 - name: Build deps and ffmpeg run: | apt-get update apt-get install -y --no-install-recommends \ git curl ca-certificates build-essential pkg-config ffmpeg - name: Cache cargo uses: actions/cache@v4 with: path: | ~/.cargo/bin ~/.cargo/registry ~/.cargo/git target key: ${{ runner.os }}-cargo-${{ hashFiles('Cargo.lock', 'rust-toolchain.toml') }} restore-keys: | ${{ runner.os }}-cargo- - name: Toolchain run: | if ! command -v cargo >/dev/null; then curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \ | sh -s -- -y --profile minimal --no-modify-path fi echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: nextest run: | export PATH="$HOME/.cargo/bin:$PATH" command -v cargo-nextest >/dev/null || \ curl -LsSf https://get.nexte.st/latest/linux \ | tar zxf - -C "$HOME/.cargo/bin" - name: build daemon # The harness spawns this binary; building it here keeps the compile # out of the first test's boot window. run: cargo build -p arr-daemon --bin arr - name: e2e env: TRANSMISSION_RPC_URL: http://transmission:9091/transmission/rpc run: cargo nextest run -p arr-e2e