|
| 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