Skip to content

Commit fd278b2

Browse files
committed
Add PR benchmark workflow
1 parent e66e099 commit fd278b2

File tree

1 file changed

+92
-0
lines changed

1 file changed

+92
-0
lines changed

.github/workflows/benchmark-pr.yml

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
name: Benchmark Main
2+
3+
on:
4+
pull_request:
5+
types: [opened, synchronize, reopened, labeled]
6+
7+
permissions:
8+
contents: read
9+
10+
env:
11+
BENCHMARK_CLASSES: export.BatchSpanProcessorBenchmark
12+
13+
jobs:
14+
sdk-benchmark:
15+
name: Benchmark SDK (Java ${{ matrix.test-java-version }})
16+
runs-on: oracle-bare-metal-64cpu-512gb-x86-64
17+
container:
18+
image: ubuntu:24.04@sha256:353675e2a41babd526e2b837d7ec780c2a05bca0164f7ea5dbbd433d21d166fc
19+
timeout-minutes: 20 # since there is only a single bare metal runner across all repos
20+
if: contains(github.event.pull_request.labels.*.name, 'run benchmarks')
21+
strategy:
22+
fail-fast: false
23+
matrix:
24+
test-java-version:
25+
- 17
26+
- 24
27+
steps:
28+
- name: Install Git
29+
run: |
30+
apt-get update
31+
apt-get install -y git
32+
33+
- name: Configure Git safe directory
34+
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
35+
36+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
37+
38+
- id: setup-java-test
39+
name: Set up Java ${{ matrix.test-java-version }} for tests
40+
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
41+
with:
42+
distribution: temurin
43+
java-version: ${{ matrix.test-java-version }}
44+
45+
- id: setup-java
46+
name: Set up Java for build
47+
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
48+
with:
49+
distribution: temurin
50+
java-version: 17
51+
52+
- name: Set up gradle
53+
uses: gradle/actions/setup-gradle@ed408507eac070d1f99cc633dbcf757c94c7933a # v4.4.3
54+
55+
- name: Build Benchmark
56+
run: ./gradlew jmhJar
57+
58+
- name: Run Benchmark
59+
run: >
60+
${{ steps.setup-java-test.outputs.path }}/bin/java
61+
-jar sdk/trace/build/libs/opentelemetry-sdk-trace-*-jmh.jar
62+
-rf json
63+
${{ env.BENCHMARK_CLASSES }}
64+
65+
- name: Rename results
66+
run: mv jmh-result.json jmh-result-pr.json
67+
68+
- name: Switch to main branch
69+
run: |
70+
mv jmh-result.json jmh-result-pr.json
71+
git checkout origin/main
72+
73+
- name: Build Benchmark on main branch
74+
run: ./gradlew jmhJar
75+
76+
- name: Run Benchmark on main branch
77+
run: >
78+
${{ steps.setup-java-test.outputs.path }}/bin/java
79+
-jar sdk/trace/build/libs/opentelemetry-sdk-trace-*-jmh.jar
80+
-rf json
81+
${{ env.BENCHMARK_CLASSES }}
82+
83+
- name: Rename results
84+
run: mv jmh-result.json jmh-result-main.json
85+
86+
- name: Upload benchmark results
87+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
88+
with:
89+
name: benchmark-results-java-${{ matrix.test-java-version }}
90+
path: |
91+
sdk/trace/build/jmh-result-pr.json
92+
sdk/trace/build/jmh-result-main.json

0 commit comments

Comments
 (0)