Skip to content

Full E2E & Benchmarks #7

Full E2E & Benchmarks

Full E2E & Benchmarks #7

Workflow file for this run

name: Full E2E & Benchmarks
on:
workflow_dispatch:
inputs:
suite:
description: 'Test suite to run'
type: choice
options:
- all
- e2e-full
- benchmarks
default: 'all'
parallel:
description: 'Run E2E tests in parallel'
type: boolean
default: true
schedule:
- cron: '0 4 * * 0' # Weekly Sunday 4am UTC
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
permissions:
contents: read
jobs:
e2e-full:
name: Full E2E Suite
runs-on: ubuntu-latest
timeout-minutes: 45
if: inputs.suite == 'all' || inputs.suite == 'e2e-full' || github.event_name == 'schedule'
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
- name: Cache cargo
uses: Swatinem/rust-cache@ad397744b0d591a723ab90405b7247fac0e6b8db # v2
- name: Build br
run: cargo build --release
- name: Run full E2E suite
run: |
PARALLEL_FLAG=""
if [ "${{ inputs.parallel }}" = "true" ]; then
PARALLEL_FLAG="--parallel"
fi
scripts/e2e_full.sh $PARALLEL_FLAG
env:
E2E_FULL_CONFIRM: 1
E2E_TIMEOUT: 180
HARNESS_ARTIFACTS: 1
NO_COLOR: 1
- name: Upload E2E summary
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: e2e-full-summary
path: target/test-artifacts/e2e_full_summary.json
if-no-files-found: ignore
- name: Upload E2E artifacts on failure
if: failure()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: e2e-full-artifacts
path: target/test-artifacts/
if-no-files-found: ignore
benchmarks-full:
name: Full Benchmarks
runs-on: ubuntu-latest
timeout-minutes: 60
if: inputs.suite == 'all' || inputs.suite == 'benchmarks' || github.event_name == 'schedule'
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
- name: Cache cargo
uses: Swatinem/rust-cache@ad397744b0d591a723ab90405b7247fac0e6b8db # v2
- name: Restore criterion baseline
uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
with:
path: target/criterion/
key: ${{ runner.os }}-${{ runner.arch }}-criterion-full-${{ github.run_id }}
restore-keys: |
${{ runner.os }}-${{ runner.arch }}-criterion-full-
${{ runner.os }}-${{ runner.arch }}-criterion-
- name: Build br
run: cargo build --release
- name: Run full benchmarks
run: scripts/bench.sh
env:
BENCH_CONFIRM: 1
BENCH_TIMEOUT: 600
NO_COLOR: 1
- name: Upload benchmark summary
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: benchmark-full-summary
path: target/test-artifacts/benchmark_summary.json
if-no-files-found: ignore
- name: Upload criterion reports
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: criterion-reports
path: target/criterion/
if-no-files-found: ignore
- name: Save criterion baseline
if: always()
uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
with:
path: target/criterion/
key: ${{ runner.os }}-${{ runner.arch }}-criterion-full-${{ github.run_id }}