Skip to content

Commit 7dbfe21

Browse files
committed
Bench CI workflow
1 parent 0b0fdda commit 7dbfe21

File tree

1 file changed

+95
-0
lines changed

1 file changed

+95
-0
lines changed

.github/workflows/bench.yml

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
name: "Benchmark"
2+
3+
on:
4+
pull_request:
5+
paths-ignore:
6+
- 'compiler/**'
7+
- 'apigen/**'
8+
- 'changelog-generator/**'
9+
- 'issue-bot/**'
10+
push:
11+
branches:
12+
- "2.1.x"
13+
paths-ignore:
14+
- 'compiler/**'
15+
- 'apigen/**'
16+
- 'changelog-generator/**'
17+
- 'issue-bot/**'
18+
19+
concurrency:
20+
group: bench-${{ github.head_ref || github.run_id }}
21+
cancel-in-progress: true
22+
23+
jobs:
24+
baseline:
25+
name: "Baseline"
26+
runs-on: ubuntu-latest
27+
timeout-minutes: 60
28+
29+
steps:
30+
- name: Harden the runner (Audit all outbound calls)
31+
uses: step-security/harden-runner@5ef0c079ce82195b2a36a210272d6b661572d83e # v2.14.2
32+
with:
33+
egress-policy: audit
34+
35+
- name: "Checkout base branch"
36+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
37+
with:
38+
ref: ${{ github.event.pull_request.base.sha || github.sha }}
39+
40+
- name: "Install PHP"
41+
uses: "shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1" # v2
42+
with:
43+
coverage: "none"
44+
php-version: "8.5"
45+
tools: pecl
46+
extensions: ds,mbstring
47+
ini-file: development
48+
ini-values: memory_limit=-1
49+
50+
- uses: "ramsey/composer-install@3cf229dc2919194e9e36783941438d17239e8520" # v3
51+
52+
- name: "Run phpbench baseline"
53+
run: "vendor/bin/phpbench run --dump-file=tests/bench/storage/baseline.xml --tag=baseline"
54+
55+
- name: "Upload baseline artifact"
56+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
57+
with:
58+
name: phpbench-baseline
59+
path: tests/bench/storage/baseline.xml
60+
61+
test:
62+
name: "Test"
63+
runs-on: ubuntu-latest
64+
timeout-minutes: 60
65+
needs: baseline
66+
67+
steps:
68+
- name: Harden the runner (Audit all outbound calls)
69+
uses: step-security/harden-runner@5ef0c079ce82195b2a36a210272d6b661572d83e # v2.14.2
70+
with:
71+
egress-policy: audit
72+
73+
- name: "Checkout"
74+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1
75+
76+
- name: "Install PHP"
77+
uses: "shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1" # v2
78+
with:
79+
coverage: "none"
80+
php-version: "8.5"
81+
tools: pecl
82+
extensions: ds,mbstring
83+
ini-file: development
84+
ini-values: memory_limit=-1
85+
86+
- uses: "ramsey/composer-install@3cf229dc2919194e9e36783941438d17239e8520" # v3
87+
88+
- name: "Download baseline artifact"
89+
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
90+
with:
91+
name: phpbench-baseline
92+
path: tests/bench/storage
93+
94+
- name: "Run phpbench test"
95+
run: "vendor/bin/phpbench run --file=tests/bench/storage/baseline.xml --ref=baseline --report=aggregate --assert=\"variant.mode <= baseline.mode +/- 5%\""

0 commit comments

Comments
 (0)