chore: move cache to external library, add API-level configuration #3376
Workflow file for this run
This file contains 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: "Benchmark testing" | |
on: | |
workflow_dispatch: | |
pull_request: | |
permissions: | |
contents: read | |
jobs: | |
Benchmark-Test: | |
name: "Benchmark tests" | |
runs-on: ubuntu-20.04 | |
# note: we want benchmarks to run on pull_request events in order to publish results to a sticky comment, and | |
# we also want to run on push such that merges to main are recorded to the cache. For this reason we don't filter | |
# the job by event. | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | |
- name: Bootstrap environment | |
uses: ./.github/actions/bootstrap | |
- name: Restore base benchmark result | |
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 #v4.0.2 | |
with: | |
path: test/results/benchmark-main.txt | |
# use base sha for PR or new commit hash for main push in benchmark result key | |
key: ${{ runner.os }}-bench-${{ (github.event.pull_request.base.sha != github.event.after) && github.event.pull_request.base.sha || github.event.after }} | |
- name: Run benchmark tests | |
id: benchmark | |
run: | | |
REF_NAME=${GITHUB_REF##*/} make benchmark | |
OUTPUT=$(make show-benchstat) | |
OUTPUT="${OUTPUT//'%'/'%25'}" # URL encode all '%' characters | |
OUTPUT="${OUTPUT//$'\n'/'%0A'}" # URL encode all '\n' characters | |
OUTPUT="${OUTPUT//$'\r'/'%0D'}" # URL encode all '\r' characters | |
echo "result=$OUTPUT" >> $GITHUB_OUTPUT | |
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 | |
with: | |
name: benchmark-test-results | |
path: test/results/**/* | |
- name: Update PR benchmark results comment | |
uses: marocchino/sticky-pull-request-comment@331f8f5b4215f0445d3c07b4967662a32a2d3e31 #v2.9.0 | |
continue-on-error: true | |
with: | |
header: benchmark | |
message: | | |
### Benchmark Test Results | |
<details> | |
<summary>Benchmark results from the latest changes vs base branch</summary> | |
``` | |
${{ steps.benchmark.outputs.result }} | |
``` | |
</details> |