Skip to content

Commit b9e69c2

Browse files
committed
Add PR benchmark workflow
1 parent 83b67ce commit b9e69c2

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed

.github/workflows/benchmark-pr.yml

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

0 commit comments

Comments
 (0)