next.js/.github/workflows/turbopack-benchmark.yml
turbopack-benchmark.yml132 lines3.9 KB
name: Turbopack Benchmark

on:
  workflow_dispatch:
  push:
    branches:
      - canary
  pull_request:
    types: ['opened', 'reopened', 'synchronize', 'labeled']
    paths:
      - '**/crates/**'
      - '**/Cargo.toml'
      - '**/Cargo.lock'

concurrency:
  # Limit concurrent runs to 1 per PR, but allow concurrent runs on canary branch
  group: ${{ github.event_name == 'pull_request' && format('{0}-{1}', github.workflow, github.event.pull_request.number) || format('{0}-{1}-{2}', github.workflow, github.ref_name, github.run_id) }}
  cancel-in-progress: ${{ github.event_name == 'pull_request' }}

env:
  CI: 1
  RUST_LOG: 'off'
  TURBO_TEAM: 'vtest314-next-adapter-e2e-tests'
  # Prefer shared remote cache across runs, but keep local cache enabled so jobs
  # degrade gracefully if the remote cache or token is unavailable.
  TURBO_CACHE: 'local:rw,remote:rw'
  TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}

permissions:
  contents: read
  id-token: write

jobs:
  benchmark-small-apps:
    name: Benchmark Rust Crates (small apps)
    runs-on: ubuntu-latest-16-core-oss
    steps:
      - uses: actions/checkout@v4

      - name: Setup Rust toolchain
        uses: ./.github/actions/setup-rust

      - name: Install cargo-codspeed
        run: cargo binstall --no-confirm cargo-codspeed@3.0.5

      - name: Start sccache
        uses: ./.github/actions/sccache
        with:
          turbo-token: ${{ secrets.TURBO_TOKEN }}

      - name: Install pnpm dependencies
        working-directory: turbopack/benchmark-apps
        run: |
          npm i -g corepack@0.31
          corepack enable
          pnpm install --loglevel error

      - name: Build app build benchmarks
        env:
          CODSPEED_RUNNER_MODE: instrumentation
        run: cargo codspeed build -p turbopack-cli small_apps

      - name: Run the benchmarks
        uses: CodSpeedHQ/action@1c8ae4843586d3ba879736b7f6b7b0c990757fab # v4.12.1
        with:
          mode: instrumentation
          run: cargo codspeed run -p turbopack-cli small_apps

  benchmark-analyzer:
    name: Benchmark Rust Crates (analyzer)
    runs-on: ubuntu-latest-16-core-oss
    steps:
      - uses: actions/checkout@v4

      - name: Setup Rust toolchain
        uses: ./.github/actions/setup-rust

      - name: Install cargo-codspeed
        run: cargo binstall --no-confirm cargo-codspeed@3.0.5

      - name: Start sccache
        uses: ./.github/actions/sccache
        with:
          turbo-token: ${{ secrets.TURBO_TOKEN }}

      - name: Install pnpm dependencies
        working-directory: turbopack/benchmark-apps
        run: |
          npm i -g corepack@0.31
          corepack enable
          pnpm install --loglevel error

      - name: Build app build benchmarks
        env:
          CODSPEED_RUNNER_MODE: instrumentation
        run: cargo codspeed build -p turbopack-ecmascript references

      - name: Run the benchmarks
        uses: CodSpeedHQ/action@1c8ae4843586d3ba879736b7f6b7b0c990757fab # v4.12.1
        with:
          mode: instrumentation
          run: cargo codspeed run -p turbopack-ecmascript references

  benchmark-large:
    name: Benchmark Rust Crates (large)
    if: ${{ github.event.label.name == 'benchmark' || github.event_name == 'workflow_dispatch' }}
    runs-on: ubuntu-latest-16-core-oss
    steps:
      - uses: actions/checkout@v4

      - name: Setup Rust toolchain
        uses: ./.github/actions/setup-rust

      - name: Install cargo-codspeed
        run: cargo binstall --no-confirm cargo-codspeed@3.0.5

      - name: Start sccache
        uses: ./.github/actions/sccache
        with:
          turbo-token: ${{ secrets.TURBO_TOKEN }}

      - name: Build the benchmark target(s)
        env:
          CODSPEED_RUNNER_MODE: instrumentation
        run: cargo codspeed build -p turbopack -p turbopack-bench

      - name: Run the benchmarks
        uses: CodSpeedHQ/action@1c8ae4843586d3ba879736b7f6b7b0c990757fab # v4.12.1
        with:
          mode: instrumentation
          run: cargo codspeed run
Quest for Codev2.0.0
/
SIGN IN