name: Benchmark Bridge Tests # CI fan-out fix: the PR-scoped concurrency from #14069 fell back to # github.run_id on push, so every develop push got a unique group and # nothing ever superseded. A 37-merge wave queued thousands of push runs # and starved the self-hosted fleet. Fall back to github.ref (all develop # pushes share a group) and cancel superseded runs on push too. PR behavior # is unchanged (pull_request.number still wins the key); merge_group and # schedule events are not in the cancel set, so the merge queue and nightly # runs always complete. concurrency: group: benchmark-tests-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: ${{ github.event_name == 'pull_request' || github.event_name == 'push' }} on: push: branches: [main, develop] paths: - "packages/lifeops-bench/**" - ".github/workflows/benchmark-tests.yml" pull_request: branches: [main] paths: - "packages/lifeops-bench/**" - ".github/workflows/benchmark-tests.yml" workflow_dispatch: env: NODE_NO_WARNINGS: "1" # Default to least privilege. Override per-job where needed. permissions: contents: read jobs: benchmark: runs-on: ${{ fromJSON(vars.HETZNER_FLEET_ONLINE == 'false' && '["ubuntu-24.04"]' || '["self-hosted","hetzner-robot"]') }} timeout-minutes: 20 strategy: fail-fast: false matrix: include: - lane: benchmark-tests command: bunx vitest run --config packages/lifeops-bench/vitest.config.ts --root packages/lifeops-bench --passWithNoTests - lane: benchmark-lint command: bunx @biomejs/biome check packages/lifeops-bench/src steps: - name: Checkout repository uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 with: submodules: false - name: Setup Node.js uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e with: node-version: "24" check-latest: false - name: Setup workspace dependencies uses: ./.github/actions/setup-bun-workspace with: bun-version: "1.3.14" # pinned: floating canary writes lockfileVersion 2 and breaks --frozen-lockfile (#11184/#9454); packageManager bun@1.4.0-canary.1 is unresolvable (GH+npm 404) install-command: bun install --ignore-scripts --no-frozen-lockfile install-native-deps: "false" - name: Run ${{ matrix.lane }} lane env: CI: "true" run: ${{ matrix.command }}