Skip to content

Commit b2204c8

Browse files
committed
Add PR benchmark workflow
1 parent 78c668d commit b2204c8

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: sdk/logs
16+
BENCHMARK_CLASSES: BooleanStateBenchmark
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+
runs-on: oracle-bare-metal-64cpu-512gb-x86-64
28+
container:
29+
image: ubuntu:24.04@sha256:353675e2a41babd526e2b837d7ec780c2a05bca0164f7ea5dbbd433d21d166fc
30+
timeout-minutes: 20 # since there is only a single bare metal runner across all repos
31+
steps:
32+
- name: Install Git
33+
run: |
34+
apt-get update
35+
apt-get install -y git
36+
37+
- name: Configure Git safe directory
38+
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
39+
40+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
41+
42+
- id: setup-java-test
43+
name: Set up Java ${{ matrix.test-java-version }} for tests
44+
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
45+
with:
46+
distribution: temurin
47+
java-version: ${{ matrix.test-java-version }}
48+
49+
- id: setup-java
50+
name: Set up Java for build
51+
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
52+
with:
53+
distribution: temurin
54+
java-version: 17
55+
56+
- name: Set up gradle
57+
uses: gradle/actions/setup-gradle@ed408507eac070d1f99cc633dbcf757c94c7933a # v4.4.3
58+
59+
- name: Build Benchmark
60+
run: ./gradlew jmhJar
61+
62+
- name: Run Benchmark
63+
run: >
64+
${{ steps.setup-java-test.outputs.path }}/bin/java
65+
-jar ${{ env.BENCHMARK_MODULE }}/build/libs/opentelemetry-*-jmh.jar
66+
-rf json
67+
${{ env.BENCHMARK_CLASSES }}
68+
69+
- name: Rename results
70+
run: mv jmh-result.json jmh-result-pr.json
71+
72+
- name: Switch to main branch
73+
run: git checkout origin/main
74+
75+
- name: Build Benchmark on main branch
76+
run: ./gradlew jmhJar
77+
78+
- name: Run Benchmark on main branch
79+
run: >
80+
${{ steps.setup-java-test.outputs.path }}/bin/java
81+
-jar ${{ env.BENCHMARK_MODULE }}/build/libs/opentelemetry-*-jmh.jar
82+
-rf json
83+
${{ env.BENCHMARK_CLASSES }}
84+
# Allow failure when benchmark doesn't exist on main branch (new benchmarks in PR)
85+
continue-on-error: true
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)