From 3b3fb4156119fdb99744fe6a9b091faa8838524d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 7 Aug 2025 23:20:34 -0700 Subject: [PATCH] Offer a strategy to reduce cache churn --- caching-strategies.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/caching-strategies.md b/caching-strategies.md index 47946c3..1acb696 100644 --- a/caching-strategies.md +++ b/caching-strategies.md @@ -304,3 +304,26 @@ steps: - name: Publish package to public run: ./publish.sh ``` + +### Saving cache only if the build runs on the default branch + +Workflow runs can restore caches created in either the current branch or the default branch (usually `main`) [Reference](https://docs.github.com/en/actions/reference/workflows-and-actions/dependency-caching#restrictions-for-accessing-a-cache). + +By restricting caches to the default branch, we can reduce the risk that Github evicts a cache created on the default branch. If that happens, every PR will create its own cache, increasing the cache churn. + +We can condition the execution of the `actions/cache/save` action on the current branch: + +```yaml +steps: + - uses: actions/checkout@v3 + . + . // restore if need be + . + - name: Build + run: /build.sh + - uses: actions/cache/save@v3 + if: ${{ github.ref == 'refs/heads/main' }} // check we are on the default branch + with: + path: path/to/dependencies + key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} +``` \ No newline at end of file