Repository navigation
49 lines (46 loc) · 1.52 KB
/
Copy pathperformance.yml
File metadata and controls
49 lines (46 loc) · 1.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
name: Performance budgets
on:
pull_request:
push:
branches: [main]
permissions:
contents: read
jobs:
regression:
name: Paired performance budgets (${{ matrix.group }})
runs-on: ubuntu-24.04
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
group: [core, maps, sets, objects, apply-return-search]
steps:
- uses: actions/checkout@v7
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
- uses: actions/checkout@v7
with:
ref: ${{ github.event.pull_request.base.sha || github.event.before }}
path: benchmark-base
- uses: pnpm/action-setup@v6
- uses: actions/setup-node@v7
with:
node-version: 24.16.0
cache: pnpm
- name: Install and build the PR base
run: |
pnpm --dir benchmark-base install --frozen-lockfile
pnpm --dir benchmark-base build
- name: Install candidate dependencies and validate budget tooling
run: |
pnpm install --frozen-lockfile
node --test perf-testing/regression.test.mjs
- name: Compare base and candidate sequentially on this runner
run: pnpm benchmark:ci --base-dir benchmark-base --group ${{ matrix.group }}
- name: Upload every measurement and budget decision
if: always()
uses: actions/upload-artifact@v7
with:
name: performance-budget-results-${{ matrix.group }}
path: perf-testing/results/ci/
if-no-files-found: warn