Skip to content

Commit db27d02

Browse files
committed
Add PR benchmark workflow
1 parent 6fd68cd commit db27d02

File tree

1 file changed

+93
-0
lines changed

1 file changed

+93
-0
lines changed

.github/workflows/benchmark-pr.yml

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
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_CLASSES: StringMarshalBenchmark
16+
17+
jobs:
18+
sdk-benchmark:
19+
name: Benchmark SDK (Java ${{ matrix.test-java-version }})
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+
runs-on: oracle-bare-metal-64cpu-512gb-x86-64
27+
container:
28+
image: ubuntu:24.04@sha256:353675e2a41babd526e2b837d7ec780c2a05bca0164f7ea5dbbd433d21d166fc
29+
timeout-minutes: 20 # since there is only a single bare metal runner across all repos
30+
steps:
31+
- name: Install Git
32+
run: |
33+
apt-get update
34+
apt-get install -y git
35+
36+
- name: Configure Git safe directory
37+
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
38+
39+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
40+
41+
- id: setup-java-test
42+
name: Set up Java ${{ matrix.test-java-version }} for tests
43+
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
44+
with:
45+
distribution: temurin
46+
java-version: ${{ matrix.test-java-version }}
47+
48+
- id: setup-java
49+
name: Set up Java for build
50+
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
51+
with:
52+
distribution: temurin
53+
java-version: 17
54+
55+
- name: Set up gradle
56+
uses: gradle/actions/setup-gradle@ed408507eac070d1f99cc633dbcf757c94c7933a # v4.4.3
57+
58+
- name: Build Benchmark
59+
run: ./gradlew jmhJar
60+
61+
- name: Run Benchmark
62+
run: >
63+
${{ steps.setup-java-test.outputs.path }}/bin/java
64+
-jar exporters/otlp/common/build/libs/opentelemetry-sdk-trace-*-jmh.jar
65+
-rf json
66+
${{ env.BENCHMARK_CLASSES }}
67+
68+
- name: Rename results
69+
run: mv jmh-result.json jmh-result-pr.json
70+
71+
- name: Switch to main branch
72+
run: git checkout origin/main
73+
74+
- name: Build Benchmark on main branch
75+
run: ./gradlew jmhJar
76+
77+
- name: Run Benchmark on main branch
78+
run: >
79+
${{ steps.setup-java-test.outputs.path }}/bin/java
80+
-jar exporters/otlp/common/build/libs/opentelemetry-sdk-trace-*-jmh.jar
81+
-rf json
82+
${{ env.BENCHMARK_CLASSES }}
83+
84+
- name: Rename results
85+
run: mv jmh-result.json jmh-result-main.json
86+
87+
- name: Upload benchmark results
88+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
89+
with:
90+
name: benchmark-results-java-${{ matrix.test-java-version }}
91+
path: |
92+
jmh-result-pr.json
93+
jmh-result-main.json

0 commit comments

Comments
 (0)