@@ -3,6 +3,8 @@ name: Benchmark Main
33on :
44 push :
55 branches : [ main ]
6+ pull_request :
7+ types : [opened, synchronize, reopened, labeled]
68 workflow_dispatch :
79
810permissions :
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'
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