Skip to content

Commit

Permalink
Save benchmark cache even the job is failed (#5694)
Browse files Browse the repository at this point in the history
Part of #4537,
replace #5671

I tried to use `save-always` to simplify it, but this flag never worked.
actions/cache#1315.

So, I split the cache action into two, one for restore and one for save.
The save step would always run even if a step failed.

Some actions I run to prove it could work:
- On success:
https://github.com/XSAM/opentelemetry-go/actions/runs/10292883964/job/28488154161
- On failure:
https://github.com/XSAM/opentelemetry-go/actions/runs/10292907887/job/28488227777
  • Loading branch information
XSAM authored Aug 9, 2024
1 parent 6c099c2 commit b5a9cfb
Showing 1 changed file with 10 additions and 8 deletions.
18 changes: 10 additions & 8 deletions .github/workflows/benchmark.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,18 +21,12 @@ jobs:
- name: Run benchmarks
run: make benchmark | tee output.txt
- name: Download previous benchmark data
uses: actions/cache@v4
uses: actions/cache/restore@v4
with:
path: ./benchmarks
# Use the current commit SHA as the cache key.
# This key won't exist on the first run, so the cache match falls back to restore-keys.
# Though, it won't be matched, the cache created will use this key as the cache key.
# So the next commit will be able to restore this cache (from the restore-keys).
# https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/caching-dependencies-to-speed-up-workflows#matching-a-cache-key
key: ${{ runner.os }}-benchmark-${{ github.sha }}
# `github.event.before` means the commit before the push (i.e. the previous commit).
# So we can fetch the exact benchmark data from the previous commit.
restore-keys: ${{ runner.os }}-benchmark-${{ github.event.before }}
key: ${{ runner.os }}-benchmark-${{ github.event.before }}
- name: Store benchmarks result
uses: benchmark-action/github-action-benchmark@v1.20.3
with:
Expand All @@ -46,3 +40,11 @@ jobs:
alert-threshold: "400%"
# Add benchmark summary to GitHub workflow run report
summary-always: true
- name: Save benchmark data
uses: actions/cache/save@v4
# The cache will be saved even if a step fails.
if: always()
with:
path: ./benchmarks
# Use the current commit SHA as the cache key.
key: ${{ runner.os }}-benchmark-${{ github.sha }}

0 comments on commit b5a9cfb

Please sign in to comment.