From cad34f5315b73464001f9ae98b4b5da41aae3ffb Mon Sep 17 00:00:00 2001 From: hrmny <8845940+ForsakenHarmony@users.noreply.github.com> Date: Wed, 25 Sep 2024 18:59:40 +0200 Subject: [PATCH] bench: use bencher for continuous benchmarking --- .github/workflows/bench-turbopack.yml | 97 +++++++++++++++++++ .../test-turbopack-rust-bench-test.yml | 2 +- 2 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/bench-turbopack.yml diff --git a/.github/workflows/bench-turbopack.yml b/.github/workflows/bench-turbopack.yml new file mode 100644 index 0000000000000..7069b7c10fb9f --- /dev/null +++ b/.github/workflows/bench-turbopack.yml @@ -0,0 +1,97 @@ +name: Benchmark Turbopack +on: + push: + branches: [canary] + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + +permissions: + actions: write + contents: read + pull-requests: read + +jobs: + turbopack_rust_check: + name: Turbopack rust check + runs-on: + - 'self-hosted' + - 'linux' + - 'x64' + - 'metal' + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Rust + uses: ./.github/actions/setup-rust + with: + targets: wasm32-unknown-unknown + + - name: Run cargo check release + run: | + RUSTFLAGS="-D warnings -A deprecated" cargo check --workspace --all-targets --features rustls-tls --release + + turbopack_bench_pr: + needs: [turbopack_rust_check] + if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository + name: Benchmark and compare Turbopack performance on ${{ matrix.os.title }} + strategy: + fail-fast: false + matrix: + os: + - name: linux + title: Linux + quiet: false + runs-on: + - 'self-hosted' + - 'linux' + - 'x64' + - 'metal' + + runs-on: ${{ matrix.os.runs-on }} + permissions: + contents: read + pull-requests: write + + steps: + - name: Checkout + uses: actions/checkout@v4 + + # - name: Fetch the base branch + # run: git -c protocol.version=2 fetch --no-tags --progress --no-recurse-submodules --depth=1 origin +${{ github.base_ref }}:base + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ inputs.nodeVersion || env.NODE_LTS_VERSION }} + check-latest: true + + - run: node -v + - run: corepack enable + + - name: Setup Rust + uses: ./.github/actions/setup-rust + + - uses: bencherdev/bencher@main + + - name: Build the benchmark target(s) + run: cargo bench --workspace --exclude turbopack-bench --exclude next-swc-napi --exclude wasm --no-run + + - name: Run the benchmarks + env: + BENCHER_API_TOKEN: ${{ secrets.BENCHER_API_TOKEN }} + BENCHER_PROJECT: 06b087de-c9ba-48ec-b909-ad9f69e97537 + BENCHER_TESTBED: ${{ join(matrix.os.runs-on, '/') }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + bencher run \ + --branch '${{ github.head_ref }}' \ + --branch-start-point '${{ github.base_ref }}' \ + --branch-start-point-hash '${{ github.event.pull_request.base.sha }}' \ + --branch-reset \ + --err \ + "cargo bench --workspace --exclude turbopack-bench --exclude next-swc-napi --exclude wasm" diff --git a/.github/workflows/test-turbopack-rust-bench-test.yml b/.github/workflows/test-turbopack-rust-bench-test.yml index 2751e68db2926..6cbbf3cd25b90 100644 --- a/.github/workflows/test-turbopack-rust-bench-test.yml +++ b/.github/workflows/test-turbopack-rust-bench-test.yml @@ -30,7 +30,7 @@ jobs: if: inputs.os == 'windows' - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Rust uses: ./.github/actions/setup-rust