name: Test Benchmarks on: push: branches: [main] workflow_dispatch: concurrency: group: bench-${{ github.event.pull_request.number || github.sha }} cancel-in-progress: true permissions: contents: read pull-requests: write env: CARGO_TERM_COLOR: always jobs: benchmarks: name: Criterion Benchmarks runs-on: blacksmith-2vcpu-ubuntu-2404 timeout-minutes: 30 steps: - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable with: toolchain: 1.92.0 - uses: useblacksmith/rust-cache@f53e7f127245d2a269b3d90879ccf259876842d5 # v3 - name: Run benchmarks run: cargo bench --locked 2>&1 | tee benchmark_output.txt - name: Upload benchmark results if: always() uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 with: name: benchmark-results path: | target/criterion/ benchmark_output.txt retention-days: 30 - name: Post benchmark summary on PR if: github.event_name == 'pull_request' uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 with: script: | const script = require('./.github/workflows/scripts/test_benchmarks_pr_comment.js'); await script({ github, context, core });