This GitHub Action allows caching dependencies and build outputs to improve workflow execution time.
Create a workflow .yml
file in your repositories .github/workflows
directory. An example workflow is available below. For more information, reference the GitHub Help Documentation for Creating a workflow file.
path
- A directory to store and save the cachekey
- An explicit key for restoring and saving the cacherestore-keys
- An ordered list of keys to use for restoring the cache if no cache hit occurred for key
cache-hit
- A boolean value to indicate an exact match was found for the key
See Skipping steps based on cache-hit for info on using this output
name: Example Caching with npm
on: push
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Cache node modules
uses: actions/cache@preview
with:
path: node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Install Dependencies
run: npm install
- name: Build
run: npm run build
- name: Test
run: npm run test
See Examples
Individual caches are limited to 200MB and a repository can have up to 2GB of caches. Once the 2GB limit is reached, older caches will be evicted based on when the cache was last accessed.
Using the cache-hit
output, subsequent steps (such as install or build) can be skipped when a cache hit occurs on the key.
Example:
steps:
- uses: actions/checkout@v1
- uses: actions/cache@preview
id: cache
with:
path: path/to/dependencies
key: ${{ runner.os }}-${{ hashFiles('**/lockfiles')}}
- name: Install Dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: /install.sh
Note: The
id
defined inactions/cache
must match theid
in theif
statement (i.e.steps.[ID].outputs.cache-hit
)
We would love for you to contribute to @actions/cache
, pull requests are welcome! Please see the CONTRIBUTING.md for more information.
The scripts and documentation in this project are released under the MIT License