Skip to content

docs(ai): document the code-as-action sandbox #219

docs(ai): document the code-as-action sandbox

docs(ai): document the code-as-action sandbox #219

Workflow file for this run

name: "CI: Benchmarks"
on:
push:
branches: [main]
paths:
- 'modules/cpr/**'
- 'modules/ai/**'
- 'modules/checkpoint/**'
- 'modules/coordinator/**'
- 'modules/benchmarks/**'
- 'scripts/benchmarks/**'
- '.mvn/**'
- 'pom.xml'
- '.github/workflows/benchmarks.yml'
pull_request:
branches: [main]
paths:
- 'modules/cpr/**'
- 'modules/ai/**'
- 'modules/checkpoint/**'
- 'modules/coordinator/**'
- 'modules/benchmarks/**'
- 'scripts/benchmarks/**'
- '.mvn/**'
- 'pom.xml'
- '.github/workflows/benchmarks.yml'
schedule:
- cron: '0 6 * * 1' # Weekly Monday 6am UTC
workflow_dispatch:
permissions:
contents: write
pull-requests: write
jobs:
jmh:
name: JMH Micro-Benchmarks
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v6
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
java-version: '21'
distribution: 'temurin'
cache: maven
- name: Build benchmarks
run: ./mvnw -Pperf -pl modules/benchmarks -am package -DskipTests -q
- name: Run JMH (CI mode — minimal iterations for regression detection)
run: |
mkdir -p target
java -jar modules/benchmarks/target/benchmarks.jar \
-f 1 -wi 1 -i 3 \
-rf json -rff target/jmh-results.json
- name: Store benchmark result
uses: benchmark-action/github-action-benchmark@v1
if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request'
with:
name: 'Atmosphere JMH Benchmarks'
tool: 'jmh'
output-file-path: target/jmh-results.json
github-token: ${{ secrets.GITHUB_TOKEN }}
# Store history on a dedicated branch (not gh-pages, which
# serves async-io.org). The benchmark-data branch is data-only;
# the dashboard HTML is viewable locally via gh-pages or from
# the atmosphere.github.io docs site if linked.
gh-pages-branch: benchmark-data
auto-push: ${{ github.ref == 'refs/heads/main' }}
alert-threshold: '115%'
comment-on-alert: true
fail-on-alert: false
benchmark-data-dir-path: 'dev/bench'
- name: Upload results artifact
if: always()
uses: actions/upload-artifact@v7
with:
name: jmh-results
path: target/jmh-results.json
vt-pinning:
name: Virtual Thread Pinning Check
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v6
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
java-version: '21'
distribution: 'temurin'
cache: maven
- name: Build benchmarks
run: ./mvnw -Pperf -pl modules/benchmarks -am package -DskipTests -q
- name: Check for VT pinning (Checkpoint + Broadcaster — most lock-sensitive)
run: |
scripts/benchmarks/vt-pinning-check.sh "Checkpoint|Broadcaster" \
-p snapshotCount=1000 -p subscriberCount=10
- name: Upload JFR recording
if: failure()
uses: actions/upload-artifact@v7
with:
name: vt-pinning-jfr
path: target/jmh-results/vt-pinning-*.jfr