Files
Radixor/.github/workflows/benchmarks.yml

69 lines
1.5 KiB
YAML

name: Benchmarks
on:
workflow_dispatch:
schedule:
- cron: '0 3 * * 1'
push:
branches:
- main
paths:
- 'src/main/**'
- 'src/jmh/**'
- 'build.gradle'
- 'gradle.properties'
- 'gradle.lockfile'
- 'settings.gradle'
- 'gradle/**'
- 'gradlew'
- 'gradlew.bat'
- '.github/workflows/benchmarks.yml'
concurrency:
group: benchmarks-${{ github.ref }}
cancel-in-progress: true
jobs:
jmh:
runs-on: ubuntu-latest
timeout-minutes: 30
permissions:
contents: read
steps:
- name: Check out sources
uses: actions/checkout@v4
- name: Validate Gradle wrapper
uses: gradle/actions/wrapper-validation@v4
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '21'
- name: Set up Gradle caching and instrumentation
uses: gradle/actions/setup-gradle@v4
- name: Verify reproducibility inputs
shell: bash
run: |
set -euo pipefail
test -f gradle.lockfile
test -f gradle.properties
test -f gradle/verification-metadata.xml
- name: Run JMH benchmarks
run: ./gradlew clean jmh -Pjmh.includes='.*EnglishStemmerComparisonBenchmark.*' --no-daemon
- name: Upload JMH reports
uses: actions/upload-artifact@v4
with:
name: jmh-reports
path: |
build/reports/jmh/**
build/results/jmh/**
if-no-files-found: warn