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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Bootstrap environment uses: ./.github/actions/bootstrap - name: Restore base benchmark result uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 #v3.3.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@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 with: name: benchmark-test-results path: test/results/**/* - name: Update PR benchmark results comment uses: marocchino/sticky-pull-request-comment@efaaab3fd41a9c3de579aba759d2552635e590fd #v2.8.0 continue-on-error: true with: header: benchmark message: | ### Benchmark Test Results
Benchmark results from the latest changes vs base branch ``` ${{ steps.benchmark.outputs.result }} ```