From 31fa8d09c13f737c01057cb2c59b572a9eac22d0 Mon Sep 17 00:00:00 2001 From: Samuel Burnham <45365069+samuelburnham@users.noreply.github.com> Date: Thu, 20 Jul 2023 13:13:49 -0400 Subject: [PATCH] Run PR tests on self-hosted GH Actions runners --- .github/workflows/pr-test.yml | 126 ++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 .github/workflows/pr-test.yml diff --git a/.github/workflows/pr-test.yml b/.github/workflows/pr-test.yml new file mode 100644 index 0000000000..bae80737f1 --- /dev/null +++ b/.github/workflows/pr-test.yml @@ -0,0 +1,126 @@ +name: Lurk CI tests + +on: + merge_group: + push: + branches-ignored: [main] + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + branches: [main] + +env: + CARGO_TERM_COLOR: always + # Disable incremental compilation. + # + # Incremental compilation is useful as part of an edit-build-test-edit cycle, + # as it lets the compiler avoid recompiling code that hasn't changed. However, + # on CI, we're not making small edits; we're almost always building the entire + # project from scratch. Thus, incremental compilation on CI actually + # introduces *additional* overhead to support making future builds + # faster...but no future builds will ever occur in any given CI environment. + # + # See https://matklad.github.io/2021/09/04/fast-rust-builds.html#ci-workflow + # for details. + CARGO_INCREMENTAL: 0 + # Allow more retries for network requests in cargo (downloading crates) and + # rustup (installing toolchains). This should help to reduce flaky CI failures + # from transient network timeouts or other issues. + CARGO_NET_RETRY: 10 + RUSTUP_MAX_RETRIES: 10 + # Don't emit giant backtraces in the CI logs. + RUST_BACKTRACE: short + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + linux: + runs-on: [self-hosted, test] + env: + RUSTFLAGS: -D warnings + steps: + - uses: actions/checkout@v3 + - uses: actions-rs/toolchain@v1 + - uses: taiki-e/install-action@nextest + - uses: Swatinem/rust-cache@v2 + - name: Linux Tests + run: cargo nextest run --profile ci --workspace --cargo-profile dev-ci + - name: Linux Gadget Tests w/o debug assertions + run: cargo nextest run --profile ci --workspace --cargo-profile dev-no-assertions -E 'test(circuit::gadgets)' + + mac: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: + # TODO: Change to macos-latest-xl (paid resource) + - macos-latest + fail-fast: false + env: + RUSTFLAGS: -D warnings + steps: + - uses: actions/checkout@v3 + - uses: actions-rs/toolchain@v1 + - uses: taiki-e/install-action@nextest + - uses: Swatinem/rust-cache@v2 + - name: cargo test + # TODO: --all-features + run: | + cargo nextest run --release + + misc: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: + - ubuntu-latest + fail-fast: false + env: + RUSTFLAGS: -D warnings + steps: + - uses: actions/checkout@v3 + - uses: actions-rs/toolchain@v1 + - uses: taiki-e/install-action@nextest + - uses: Swatinem/rust-cache@v2 + - run: + name: Wasm compiles sucessfully + command: cargo build --target wasm32-unknown-unknown + # make sure benches don't bit-rot + - name: build benches + # TODO: --all-features + run: cargo build --benches + - name: Doctests + run: | + cargo test --doc + + clippy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions-rs/toolchain@v1 + with: + components: rustfmt, clippy + - uses: Swatinem/rust-cache@v2 + # See '.cargo/config' for list of enabled/disabled clippy lints + - name: rustfmt + uses: actions-rs/cargo@v1 + with: + command: fmt + args: --all --check + - name: cargo clippy + run: cargo xclippy -D warnings + + msrv: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Install rustup + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + - name: Install cargo-msrv + run: cargo install cargo-msrv + - name: Check Rust MSRV + run: cargo msrv verify