-
-
Notifications
You must be signed in to change notification settings - Fork 16
119 lines (110 loc) · 3.5 KB
/
bench.ci.yml
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
name: Benchmark
on:
push:
branches:
- stable
pull_request:
types: [opened, reopened, synchronize]
env:
BUILDLESS_APIKEY: ${{ secrets.BUILDLESS_APIKEY }}
jobs:
##
## Job: Benchmarks
##
bench:
strategy:
fail-fast: false
matrix:
os: [ubuntu]
java: [20]
engine: [graalvm]
experimental: [false]
include:
- os: macos
java: 20
engine: graalvm
experimental: false
name: "JVM"
runs-on: ${{ matrix.os }}-latest
continue-on-error: ${{ matrix.experimental }}
if: |
(
github.ref == 'refs/heads/stable' ||
github.ref == 'refs/heads/v3' ||
startsWith(github.ref, 'refs/tags/v') ||
contains(github.event.pull_request.labels.*.name, 'ci:bench') ||
contains(github.event.head_commit.message, 'ci:bench')
)
permissions:
actions: "read"
checks: "write"
contents: "write"
pull-requests: "write"
defaults:
run:
shell: bash
steps:
- name: "Setup: Checkout"
uses: actions/checkout@v3
- name: "Setup: GraalVM"
uses: graalvm/setup-graalvm@v1
if: ${{ matrix.engine == 'graalvm' }}
with:
components: "native-image,js,wasm"
distribution: 'graalvm'
java-version: ${{ matrix.java }}
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: "Setup: Zulu"
uses: actions/setup-java@v3
if: ${{ matrix.engine != 'graalvm' }}
with:
distribution: ${{ matrix.engine }}
java-version: ${{ matrix.java }}
- name: "Setup: Node"
uses: actions/setup-node@v3
with:
node-version: 18
cache: "yarn"
- name: "Setup: Yarn"
run: yarn
- name: "Run Benchmarks"
uses: gradle/gradle-build-action@bd5760595778326ba7f1441bcf7e88b49de61a25 # v2.6.0
id: gradlebench
continue-on-error: ${{ matrix.experimental }}
env:
CI: true
GRADLE_CACHE_PUSH: false
with:
cache-read-only: true
arguments: |
:benchmarks:server:benchmark
--no-daemon
--warning-mode=none
--dependency-verification=lenient
-Pelide.ci=true
-PbuildBenchmarks=true
-PbuildSamples=false
-PbuildDocs=false
-Pversions.java.language=${{ matrix.java }}
- name: "Locate Benchmark Report"
id: benchreport
run: |
echo "BENCHMARK_REPORT=$(find benchmarks/server/build/reports/benchmarks/main -name "*.json" | head -n 1)" >> $GITHUB_OUTPUT
- name: "Restore Previous Benchmark"
uses: actions/cache@58c146cc91c5b9e778e71775dfe9bf1442ad9a12 # v3
with:
path: ./benchmark_reports
key: ${{ runner.os }}-${{ matrix.engine }}-${{ matrix.java }}-benchmark
- name: "Upload Benchmark Report"
uses: benchmark-action/github-action-benchmark@v1
continue-on-error: true
with:
name: "Elide: Server (${{ matrix.os }}, ${{ matrix.engine }}, JDK ${{ matrix.java }})"
tool: "jmh"
auto-push: false
external-data-json-path: benchmark_reports/benchmark-data.json
comment-on-alert: true
comment-always: ${{ !matrix.experimental }}
output-file-path: ${{ steps.benchreport.outputs.BENCHMARK_REPORT }}
github-token: ${{ secrets.GITHUB_TOKEN }}
fail-on-alert: ${{ !matrix.experimental }}