ci: remove external data JSON path from benchmark.yml #13
Workflow file for this run
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
| # TODO(template) this workflow requires a `gh-pages` branch to exist. | |
| # Create it once with: | |
| # git checkout --orphan gh-pages | |
| # git reset --hard | |
| # git commit --allow-empty -m "init gh-pages" | |
| # git push origin gh-pages | |
| # | |
| # The benchmark dashboard will be available at: | |
| # https://<org>.github.io/<repo>/dev/bench/ | |
| name: Benchmarks | |
| on: | |
| push: | |
| branches: ["main"] | |
| pull_request: | |
| branches: ["main"] | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| permissions: | |
| contents: write | |
| deployments: write | |
| pull-requests: write | |
| env: | |
| CARGO_TERM_COLOR: always | |
| CARGO_INCREMENTAL: 0 | |
| CARGO_NET_RETRY: 10 | |
| RUSTUP_MAX_RETRIES: 10 | |
| jobs: | |
| benchmark: | |
| name: Continuous benchmarking | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@efa25f7f19611383d5b0ccf2d1c8914531636bf9 # stable | |
| id: rust-toolchain | |
| with: | |
| toolchain: stable | |
| - uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/bin/ | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| target/ | |
| key: ${{ runner.os }}-bench-${{ steps.rust-toolchain.outputs.cachekey }}-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-bench-${{ steps.rust-toolchain.outputs.cachekey }}- | |
| ${{ runner.os }}-bench- | |
| # TODO(template) update the bench command if you use a different | |
| # benchmark harness or need to pass extra flags | |
| - name: Run benchmarks | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| cargo bench -p template_crate --bench benchmark -- --output-format bencher 2>/dev/null | tee benchmark-output.txt | |
| # On PRs: restore the most-recent baseline written by a main-branch run. | |
| # Using only restore-keys (no matching primary key) guarantees we always | |
| # get the latest entry; the primary key includes the run ID so each main | |
| # run saves a fresh entry and PRs never hit a stale one. | |
| # Note: if no baseline cache exists yet (e.g. the very first PR before any | |
| # main-branch run has completed), the restore will miss and no regression | |
| # alert will fire. This is expected and benign — the action creates a fresh | |
| # data file and the next main-branch run will establish the baseline. | |
| - name: Restore benchmark baseline | |
| if: github.event_name == 'pull_request' | |
| uses: actions/cache/restore@v4 | |
| with: | |
| path: ./cache | |
| key: ${{ runner.os }}-benchmark-baseline-${{ github.run_id }} | |
| restore-keys: | | |
| ${{ runner.os }}-benchmark-baseline- | |
| - name: Store benchmark result (PR) | |
| if: github.event_name == 'pull_request' | |
| uses: benchmark-action/github-action-benchmark@4bdcce38c94cec68da58d012ac24b7b1155efe8b # v1 | |
| with: | |
| # TODO(template) update the name to match your project | |
| name: Rust Template Benchmark | |
| tool: "cargo" | |
| output-file-path: benchmark-output.txt | |
| external-data-json-path: ./cache/benchmark-data.json | |
| alert-threshold: "130%" | |
| comment-on-alert: true | |
| fail-on-alert: true | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| # On main: push results to gh-pages for the historical dashboard, then | |
| # save the updated baseline so future PRs compare against current main. | |
| # external-data-json-path writes the latest result into ./cache so the | |
| # subsequent save step has data to cache for PR comparisons. | |
| - name: Store benchmark result (main) | |
| if: github.event_name == 'push' | |
| uses: benchmark-action/github-action-benchmark@4bdcce38c94cec68da58d012ac24b7b1155efe8b # v1 | |
| with: | |
| # TODO(template) update the name to match your project | |
| name: Rust Template Benchmark | |
| tool: "cargo" | |
| output-file-path: benchmark-output.txt | |
| gh-pages-branch: gh-pages | |
| benchmark-data-dir-path: dev/bench | |
| alert-threshold: "130%" | |
| comment-on-alert: true | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| auto-push: true | |
| # Save the freshly-updated benchmark data as the new baseline. | |
| # The key embeds the run ID so every main run creates a new cache entry; | |
| # actions/cache would skip saving if the key already existed. | |
| - name: Save benchmark baseline | |
| if: github.event_name == 'push' | |
| uses: actions/cache/save@v4 | |
| with: | |
| path: ./cache | |
| key: ${{ runner.os }}-benchmark-baseline-${{ github.run_id }} |