docs(ai): document the code-as-action sandbox #219
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |