name: ci # Tests and clippy run on the Pi runner (aarch64) inside a rust container, so # this CI proves the aarch64 build too. Jobs use the runner's `docker` label. on: push: branches: [main] pull_request: workflow_dispatch: env: CARGO_TERM_COLOR: never RUST_IMAGE: rust:1.87-bookworm CARGO_REGISTRY_VOLUME: onionwire-cargo-registry CARGO_TARGET_VOLUME: onionwire-target-ci BUILD_CONTAINER: onionwire-ci jobs: test: runs-on: docker timeout-minutes: 120 steps: - name: Checkout uses: https://code.forgejo.org/actions/checkout@v4 - name: cargo test + clippy on aarch64 run: | set -euo pipefail docker volume create "$CARGO_REGISTRY_VOLUME" > /dev/null docker volume create "$CARGO_TARGET_VOLUME" > /dev/null docker rm -f "$BUILD_CONTAINER" > /dev/null 2>&1 || true docker create --name "$BUILD_CONTAINER" -i \ -e CARGO_TARGET_DIR=/target \ -e CARGO_BUILD_JOBS=2 \ -e CARGO_TERM_COLOR=never \ -v "$CARGO_REGISTRY_VOLUME":/usr/local/cargo/registry \ -v "$CARGO_TARGET_VOLUME":/target \ -w /src \ "$RUST_IMAGE" \ sh -euxc 'mkdir -p /src && tar xzf - -C /src && cd /src \ && apt-get update \ && apt-get install -y --no-install-recommends pkg-config libssl-dev \ && cargo test --locked \ && cargo clippy --locked --all-targets -- -D warnings' tar czf - --exclude=./target --exclude=./.git --exclude=./.worktrees . \ | docker start -a -i "$BUILD_CONTAINER" docker rm -f "$BUILD_CONTAINER" > /dev/null