ci: Use codspeed for benchmarking
#10
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
| name: CodSpeed Benchmarks | |
| on: | |
| push: | |
| branches: ["main"] | |
| pull_request: | |
| branches: ["main"] | |
| merge_group: | |
| workflow_dispatch: | |
| env: | |
| CARGO_TERM_COLOR: always | |
| RUST_BACKTRACE: 1 | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref_name }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| defaults: | |
| run: | |
| shell: bash | |
| jobs: | |
| benchmarks: | |
| name: Run benchmarks | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| persist-credentials: false | |
| - uses: ./.github/actions/rust | |
| with: | |
| version: stable | |
| tools: cargo-codspeed | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - id: nss-version | |
| run: echo "minimum=$(cat neqo-crypto/min_version.txt)" >> "$GITHUB_OUTPUT" | |
| - uses: ./.github/actions/nss | |
| with: | |
| minimum-version: ${{ steps.nss-version.outputs.minimum }} | |
| - run: | | |
| for crate in $(cargo metadata --no-deps --format-version 1 | jq -r '.packages[].name'); do | |
| if [ -e "$crate/benches" ]; then | |
| for bench in "$crate/benches"/*.rs; do | |
| bench=$(basename -s .rs "$bench") | |
| # Set measurement mode from Cargo.toml metadata, default to "instrumentation". | |
| mode=$(cargo metadata --no-deps --format-version 1 | jq -r --arg crate "$crate" --arg bench "$bench" '.packages[] | select(.name == $crate) | .metadata.bench[$bench].codspeed.mode // "instrumentation"') | |
| echo "Building benchmark '$bench' in crate '$crate' with measurement mode '$mode'" | |
| cargo codspeed build --package "$crate" --locked --features bench --bench "$bench" --release --measurement-mode "$mode" | |
| done | |
| fi | |
| done | |
| - name: Run the benchmarks | |
| uses: CodSpeedHQ/action@4348f634fa7309fe23aac9502e88b999ec90a164 # v4.3.1 | |
| with: | |
| mode: instrumentation | |
| run: cargo codspeed run | |
| token: ${{ secrets.CODSPEED_TOKEN }} |