-
Notifications
You must be signed in to change notification settings - Fork 8
175 lines (157 loc) · 5.61 KB
/
Copy pathcodspeed.yml
File metadata and controls
175 lines (157 loc) · 5.61 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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
name: CodSpeed
on:
push:
branches:
- "main"
pull_request:
workflow_dispatch:
permissions:
contents: read
id-token: write
jobs:
codspeed-instrumented:
name: Run CodSpeed instrumented (${{ matrix.plugin }})
runs-on: "ubuntu-latest"
strategy:
fail-fast: false
# Shard by plugin so the benchmark groups run in parallel instead of
# sequentially. CodSpeed aggregates the per-shard uploads on the commit.
matrix:
include:
- plugin: tinybench
bench: |
pnpm turbo run bench --filter=@codspeed/tinybench-plugin
pnpm --workspace-concurrency 1 -r bench-tinybench
- plugin: vitest
bench: |
pnpm turbo run bench --filter=@codspeed/vitest-plugin
pnpm --workspace-concurrency 1 -r bench-vitest
- plugin: benchmark.js
bench: |
pnpm turbo run bench --filter=@codspeed/benchmark.js-plugin
pnpm --workspace-concurrency 1 -r bench-benchmark-js
steps:
- uses: "actions/checkout@v4"
with:
fetch-depth: 0
submodules: true
- uses: pnpm/action-setup@v2
- uses: actions/setup-node@v3
with:
cache: pnpm
node-version-file: .nvmrc
- name: Restore turbo cache
uses: ./.github/actions/turbo-cache
with:
key-suffix: ${{ matrix.plugin }}
- run: pnpm install --frozen-lockfile --prefer-offline
- run: pnpm turbo run build
- name: Run simulation benchmarks
uses: CodSpeedHQ/action@main
with:
mode: simulation
run: ${{ matrix.bench }}
- name: Run memory benchmarks
uses: CodSpeedHQ/action@main
with:
mode: memory
run: ${{ matrix.bench }}
codspeed-walltime:
name: Run CodSpeed walltime
runs-on: "codspeed-macro"
steps:
- uses: "actions/checkout@v4"
with:
fetch-depth: 0
submodules: true
- uses: pnpm/action-setup@v2
- uses: actions/setup-node@v3
with:
cache: pnpm
node-version-file: .nvmrc
- name: Restore turbo cache
uses: ./.github/actions/turbo-cache
- run: pnpm install --frozen-lockfile --prefer-offline
- run: pnpm turbo run build
- name: Run benchmarks
# use version from `main` branch to always test the latest version, in real projects, use a tag, like `@v2`
uses: CodSpeedHQ/action@main
with:
mode: walltime
run: |
pnpm turbo run bench --filter=@codspeed/tinybench-plugin
pnpm turbo run bench --filter=@codspeed/vitest-plugin
pnpm turbo run bench --filter=@codspeed/benchmark.js-plugin
pnpm --workspace-concurrency 1 -r bench-tinybench
pnpm --workspace-concurrency 1 -r bench-vitest
codspeed-walltime-macos:
runs-on: macos-latest
steps:
- uses: "actions/checkout@v4"
with:
fetch-depth: 0
submodules: true
- uses: pnpm/action-setup@v2
- uses: actions/setup-node@v3
with:
cache: pnpm
node-version-file: .nvmrc
- name: Restore turbo cache
uses: ./.github/actions/turbo-cache
- run: pnpm install --frozen-lockfile --prefer-offline
- run: pnpm turbo run build
- name: Run macOS-only benchmarks
uses: CodSpeedHQ/action@main
with:
working-directory: packages/vitest-plugin
# Only run the macOS-only bench file: the rest of the suite already
# runs on the linux walltime job, and uploading the same benchmark
# twice for one commit is not supported.
run: pnpm turbo run bench --env-mode=loose --filter=@codspeed/vitest-plugin -- macos
mode: walltime
runner-version: latest
electron-e2e:
name: Run electron inbox e2e
runs-on: codspeed-macro
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
submodules: true
- name: Set up pnpm
uses: pnpm/action-setup@v4
# The example links @codspeed/playwright-plugin to packages/playwright-plugin via the
# `link:` protocol, so the in-repo plugin must be built (under the repo's
# own Node version) before the example installs and resolves the symlink.
- name: Set up Node.js (repo)
uses: actions/setup-node@v6
with:
node-version-file: .nvmrc
cache: pnpm
- name: Restore turbo cache
uses: ./.github/actions/turbo-cache
- name: Install repo dependencies
run: pnpm install --frozen-lockfile --prefer-offline
- name: Build @codspeed/playwright-plugin
run: pnpm turbo run build --filter=@codspeed/playwright-plugin
- name: Set up Node.js (example)
uses: actions/setup-node@v6
with:
node-version-file: examples/with-electron-and-walltime/package.json
cache: pnpm
cache-dependency-path: examples/with-electron-and-walltime/pnpm-lock.yaml
- name: Install dependencies
working-directory: examples/with-electron-and-walltime
run: pnpm install --frozen-lockfile
- name: Build electron app
working-directory: examples/with-electron-and-walltime
run: pnpm --filter @mail-client-demo/electron build
- name: Run electron inbox e2e under codspeed
uses: CodSpeedHQ/action@main
env:
CODSPEED_WALLTIME_PROFILER: "samply"
with:
working-directory: examples/with-electron-and-walltime
run: xvfb-run -a pnpm bench:electron
mode: walltime