mirror of
				https://code.forgejo.org/actions/cache.git
				synced 2025-10-31 12:42:28 +00:00 
			
		
		
		
	Offer a strategy to reduce cache churn
This commit is contained in:
		
							parent
							
								
									f7ebb81a3f
								
							
						
					
					
						commit
						3b3fb41561
					
				
					 1 changed files with 23 additions and 0 deletions
				
			
		|  | @ -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') }} | ||||
| ``` | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue