Skip to content

Commit 637a494

Browse files
committed
Add option to run benchmarks on PRs
1 parent e66e099 commit 637a494

File tree

1 file changed

+31
-3
lines changed

1 file changed

+31
-3
lines changed

.github/workflows/benchmark.yml

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ name: Benchmark Main
33
on:
44
push:
55
branches: [ main ]
6+
pull_request:
7+
types: [opened, synchronize, reopened, labeled]
68
workflow_dispatch:
79

810
permissions:
@@ -17,6 +19,9 @@ jobs:
1719
container:
1820
image: ubuntu:24.04@sha256:353675e2a41babd526e2b837d7ec780c2a05bca0164f7ea5dbbd433d21d166fc
1921
timeout-minutes: 20 # since there is only a single bare metal runner across all repos
22+
if: github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'run benchmarks')
23+
env:
24+
BENCHMARK_CLASSES: SpanBenchmark SpanPipelineBenchmark ExporterBenchmark
2025
steps:
2126
- name: Install Git
2227
run: |
@@ -37,18 +42,32 @@ jobs:
3742

3843
- name: Set up gradle
3944
uses: gradle/actions/setup-gradle@ed408507eac070d1f99cc633dbcf757c94c7933a # v4.4.3
40-
- name: Run jmh
41-
run: ./gradlew jmhJar
4245

4346
- name: Run Benchmark
4447
run: |
48+
./gradlew jmhJar
4549
cd sdk/trace/build
46-
java -jar libs/opentelemetry-sdk-trace-*-jmh.jar -rf json SpanBenchmark SpanPipelineBenchmark ExporterBenchmark
50+
java -jar libs/opentelemetry-sdk-trace-*-jmh.jar -rf json ${{ env.BENCHMARK_CLASSES }}
51+
52+
- name: Run Benchmark on main branch
53+
if: github.event_name == 'pull_request'
54+
run: |
55+
# Save PR benchmark results so not overwritten
56+
mv sdk/trace/build/jmh-result.json sdk/trace/build/jmh-result-pr.json
57+
git checkout origin/main
58+
./gradlew jmhJar
59+
cd sdk/trace/build
60+
java -jar libs/opentelemetry-sdk-trace-*-jmh.jar -rf json ${{ env.BENCHMARK_CLASSES }}
61+
# Rename main results and restore PR results
62+
mv jmh-result.json jmh-result-main.json
63+
mv jmh-result-pr.json jmh-result.json
4764
4865
- name: Use CLA approved github bot
66+
if: github.event_name != 'pull_request'
4967
run: .github/scripts/use-cla-approved-github-bot.sh
5068

5169
- name: Store benchmark results
70+
if: github.event_name != 'pull_request'
5271
uses: benchmark-action/github-action-benchmark@4bdcce38c94cec68da58d012ac24b7b1155efe8b # v1.20.7
5372
with:
5473
tool: 'jmh'
@@ -57,3 +76,12 @@ jobs:
5776
github-token: ${{ secrets.GITHUB_TOKEN }}
5877
benchmark-data-dir-path: "benchmarks"
5978
auto-push: true
79+
80+
- name: Upload benchmark results
81+
if: github.event_name == 'pull_request'
82+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
83+
with:
84+
name: benchmark-results
85+
path: |
86+
sdk/trace/build/jmh-result.json
87+
sdk/trace/build/jmh-result-main.json

0 commit comments

Comments
 (0)