-
Notifications
You must be signed in to change notification settings - Fork 3
67 lines (56 loc) · 2.15 KB
/
Copy pathbenchmarks-jmh.yml
File metadata and controls
67 lines (56 loc) · 2.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
name: JMH Benchmarks
# Strict JMH layer (Track C / B6). Deliberately decoupled from the main CI
# pipeline: forked JMH runs take minutes and must not gate PRs, so this runs
# only on demand and on a weekly cadence, and uploads the JSON report as an
# artifact. The manual smoke/diff harness keeps its own jobs in ci.yml.
on:
workflow_dispatch:
inputs:
args:
description: 'Extra JMH CLI args (e.g. "CanonicalRender -f 2 -wi 5 -i 10")'
required: false
default: ''
schedule:
# Weekly, Monday 06:00 UTC (one hour after the ci.yml weekly job).
# NOTE: GitHub runs scheduled workflows only from the default branch (main),
# so this cron stays dormant while the file lives on develop and starts firing
# once it reaches main at release. workflow_dispatch works on any branch now.
- cron: '0 6 * * 1'
permissions:
contents: read
jobs:
jmh:
name: Strict JMH benchmarks
runs-on: ubuntu-latest
timeout-minutes: 60
env:
JAVA_TOOL_OPTIONS: -Djava.awt.headless=true
steps:
- name: Check out repository
uses: actions/checkout@v6
- name: Set up Temurin JDK 17
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: '17'
cache: maven
- name: Install graph-compose-fonts (the benchmarks render with the bundled families)
run: ./mvnw -B -ntp -f fonts/pom.xml -DskipTests install
- name: Install root artifact (graph-compose + test-jar)
run: ./mvnw -B -ntp -DskipTests install -pl .
- name: Build the JMH runner jar
run: ./mvnw -B -ntp -f benchmarks/pom.xml clean package -DskipTests
- name: Run JMH benchmarks (forked, JSON report)
env:
JMH_ARGS: ${{ github.event.inputs.args }}
run: |
java -jar benchmarks/target/benchmarks.jar \
-rf json -rff benchmarks/target/jmh-result.json \
$JMH_ARGS
- name: Upload JMH results
if: always()
uses: actions/upload-artifact@v7
with:
name: jmh-results-${{ github.run_id }}
path: benchmarks/target/jmh-result.json
if-no-files-found: warn