name: Preflight comparison on: pull_request: types: [opened, synchronize, reopened, ready_for_review, converted_to_draft] paths: - .github/workflows/preflight-benchmark.yml - config/scripts/benchmark-preflight-*.mjs - config/scripts/preflight-benchmark-command.mjs workflow_dispatch: permissions: contents: read concurrency: group: preflight-comparison-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true env: ORCA_BACKGROUND_LAUNCH: '1' jobs: compilers: if: github.event_name != 'pull_request' || github.event.pull_request.draft != true # Native compiler peaks can exhaust the standard ARM runner before samples are saved. runs-on: blacksmith-8vcpu-ubuntu-2404-arm timeout-minutes: 25 steps: - uses: actions/checkout@v6 with: persist-credentials: false - uses: ./.github/actions/install-node-dependencies with: native-runtime: none node-version: '24' - uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 with: bun-version-file: config/.bun-version no-cache: true - name: Compare native and Bun typechecking run: node config/scripts/benchmark-preflight-compilers.mjs - uses: actions/upload-artifact@v7 if: always() with: name: preflight-compilers path: .build/preflight-benchmark/ retention-days: 30 static-analysis: if: github.event_name != 'pull_request' || github.event.pull_request.draft != true runs-on: ubuntu-24.04-arm timeout-minutes: 25 steps: - uses: actions/checkout@v6 with: persist-credentials: false - uses: ./.github/actions/install-node-dependencies with: native-runtime: none node-version: '24' - uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 with: bun-version-file: config/.bun-version no-cache: true - name: Compare anti-slop patch and script runtimes run: node config/scripts/benchmark-preflight-static-analysis.mjs - uses: actions/upload-artifact@v7 if: always() with: name: preflight-static-analysis path: .build/preflight-benchmark/ retention-days: 30 compatibility-imports: if: github.event_name != 'pull_request' || github.event.pull_request.draft != true runs-on: ubuntu-24.04-arm timeout-minutes: 10 steps: - uses: actions/checkout@v6 with: persist-credentials: false fetch-depth: 2 - uses: ./.github/actions/install-node-dependencies with: native-runtime: none node-version: '24' - uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 with: bun-version-file: config/.bun-version no-cache: true - name: Compare compatibility-import scan and runtimes run: node config/scripts/benchmark-preflight-compat-boundary.mjs - uses: actions/upload-artifact@v7 if: always() with: name: preflight-compat-boundary path: .build/preflight-benchmark/ retention-days: 30 localization-extraction: if: github.event_name != 'pull_request' || github.event.pull_request.draft != true runs-on: ubuntu-24.04-arm timeout-minutes: 12 steps: - uses: actions/checkout@v6 with: persist-credentials: false - uses: ./.github/actions/install-node-dependencies with: native-runtime: none node-version: '24' - uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 with: bun-version-file: config/.bun-version no-cache: true - name: Compare localization extraction runtimes and complete catalogs run: node config/scripts/benchmark-preflight-localization-extraction.mjs - uses: actions/upload-artifact@v7 if: always() with: name: preflight-localization-extraction path: .build/preflight-benchmark/ retention-days: 30