Merge pull request #329 from actions/aiyan/v2-release-doc
Update readme and examples to use v2
This commit is contained in:
		
						commit
						b8204782bb
					
				
							
								
								
									
										36
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								README.md
									
									
									
									
									
								
							| @ -8,6 +8,28 @@ This action allows caching dependencies and build outputs to improve workflow ex | ||||
| 
 | ||||
| See ["Caching dependencies to speed up workflows"](https://help.github.com/github/automating-your-workflow-with-github-actions/caching-dependencies-to-speed-up-workflows). | ||||
| 
 | ||||
| ## What's New | ||||
| 
 | ||||
| * Added support for multiple paths, [glob patterns](https://github.com/actions/toolkit/tree/master/packages/glob), and single file caches.  | ||||
| 
 | ||||
| ```yaml | ||||
| - name: Cache multiple paths | ||||
|   uses: actions/cache@v2 | ||||
|   with: | ||||
|     path: | | ||||
|       ~/cache | ||||
|       !~/cache/exclude | ||||
|       **/node_modules | ||||
|     key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} | ||||
| ``` | ||||
| 
 | ||||
| * Increased performance and improved cache sizes using `zstd` compression for Linux and macOS runners | ||||
| * Allowed caching for all events with a ref. See [events that trigger workflow](https://help.github.com/en/actions/reference/events-that-trigger-workflows) for info on which events do not have a `GITHUB_REF` | ||||
| * Released the [`@actions/cache`](https://github.com/actions/toolkit/tree/master/packages/cache) npm package to allow other actions to utilize caching | ||||
| * Added a best-effort cleanup step to delete the archive after extraction to reduce storage space | ||||
| 
 | ||||
| Refer [here](https://github.com/actions/cache/blob/v1/README.md) for previous versions | ||||
| 
 | ||||
| ## Usage | ||||
| 
 | ||||
| ### Pre-requisites | ||||
| @ -15,7 +37,7 @@ Create a workflow `.yml` file in your repositories `.github/workflows` directory | ||||
| 
 | ||||
| ### Inputs | ||||
| 
 | ||||
| * `path` - A directory to store and save the cache | ||||
| * `path` - A list of files, directories, and wildcard patterns to cache and restore. See [`@actions/glob`](https://github.com/actions/toolkit/tree/master/packages/glob) for supported patterns.  | ||||
| * `key` - An explicit key for restoring and saving the cache | ||||
| * `restore-keys` - An ordered list of keys to use for restoring the cache if no cache hit occurred for key | ||||
| 
 | ||||
| @ -46,7 +68,7 @@ jobs: | ||||
| 
 | ||||
|     - name: Cache Primes | ||||
|       id: cache-primes | ||||
|       uses: actions/cache@v1 | ||||
|       uses: actions/cache@v2 | ||||
|       with: | ||||
|         path: prime-numbers | ||||
|         key: ${{ runner.os }}-primes | ||||
| @ -93,9 +115,11 @@ A cache key can include any of the contexts, functions, literals, and operators | ||||
| For example, using the [`hashFiles`](https://help.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#hashfiles) function allows you to create a new cache when dependencies change. | ||||
| 
 | ||||
| ```yaml | ||||
|   - uses: actions/cache@v1 | ||||
|   - uses: actions/cache@v2 | ||||
|     with: | ||||
|       path: path/to/dependencies | ||||
|       path: |  | ||||
|         path/to/dependencies | ||||
|         some/other/dependencies  | ||||
|       key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }} | ||||
| ``` | ||||
| 
 | ||||
| @ -109,7 +133,7 @@ Additionally, you can use arbitrary command output in a cache key, such as a dat | ||||
|       echo "::set-output name=date::$(/bin/date -u "+%Y%m%d")" | ||||
|     shell: bash | ||||
| 
 | ||||
|   - uses: actions/cache@v1 | ||||
|   - uses: actions/cache@v2 | ||||
|     with: | ||||
|       path: path/to/dependencies | ||||
|       key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/lockfiles') }} | ||||
| @ -130,7 +154,7 @@ Example: | ||||
| steps: | ||||
|   - uses: actions/checkout@v2 | ||||
| 
 | ||||
|   - uses: actions/cache@v1 | ||||
|   - uses: actions/cache@v2 | ||||
|     id: cache | ||||
|     with: | ||||
|       path: path/to/dependencies | ||||
|  | ||||
| @ -3,7 +3,7 @@ description: 'Cache artifacts like dependencies and build outputs to improve wor | ||||
| author: 'GitHub' | ||||
| inputs: | ||||
|   path: | ||||
|     description: 'A directory to store and save the cache' | ||||
|     description: 'A list of files, directories, and wildcard patterns to cache and restore' | ||||
|     required: true | ||||
|   key: | ||||
|     description: 'An explicit key for restoring and saving the cache' | ||||
|  | ||||
							
								
								
									
										125
									
								
								examples.md
									
									
									
									
									
								
							
							
						
						
									
										125
									
								
								examples.md
									
									
									
									
									
								
							| @ -35,7 +35,7 @@ | ||||
| Using [NuGet lock files](https://docs.microsoft.com/nuget/consume-packages/package-references-in-project-files#locking-dependencies): | ||||
| 
 | ||||
| ```yaml | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   with: | ||||
|     path: ~/.nuget/packages | ||||
|     key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} | ||||
| @ -44,13 +44,25 @@ Using [NuGet lock files](https://docs.microsoft.com/nuget/consume-packages/packa | ||||
| ``` | ||||
| 
 | ||||
| Depending on the environment, huge packages might be pre-installed in the global cache folder. | ||||
| If you do not want to include them, consider to move the cache folder like below. | ||||
| With `actions/cache@v2` you can now exclude unwanted packages with [exclude pattern](https://github.com/actions/toolkit/tree/master/packages/glob#exclude-patterns) | ||||
| ```yaml | ||||
| - uses: actions/cache@v2 | ||||
|   with: | ||||
|     path: |  | ||||
|       ~/.nuget/packages | ||||
|       !~/.nuget/packages/unwanted | ||||
|     key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} | ||||
|     restore-keys: | | ||||
|       ${{ runner.os }}-nuget- | ||||
| ``` | ||||
| 
 | ||||
| Or you could move the cache folder like below. | ||||
| >Note: This workflow does not work for projects that require files to be placed in user profile package folder | ||||
| ```yaml | ||||
| env: | ||||
|   NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages | ||||
| steps: | ||||
|   - uses: actions/cache@v1 | ||||
|   - uses: actions/cache@v2 | ||||
|     with: | ||||
|       path: ${{ github.workspace }}/.nuget/packages | ||||
|       key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} | ||||
| @ -63,7 +75,7 @@ steps: | ||||
| ### POSIX | ||||
| 
 | ||||
| ```yaml | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   with: | ||||
|     path: ~/.dub | ||||
|     key: ${{ runner.os }}-dub-${{ hashFiles('**/dub.json') }} | ||||
| @ -74,7 +86,7 @@ steps: | ||||
| ### Windows | ||||
| 
 | ||||
| ```yaml | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   with: | ||||
|     path: ~\AppData\Local\dub | ||||
|     key: ${{ runner.os }}-dub-${{ hashFiles('**/dub.json') }} | ||||
| @ -84,7 +96,7 @@ steps: | ||||
| 
 | ||||
| ## Elixir - Mix | ||||
| ```yaml | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   with: | ||||
|     path: deps | ||||
|     key: ${{ runner.os }}-mix-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }} | ||||
| @ -95,7 +107,7 @@ steps: | ||||
| ## Go - Modules | ||||
| 
 | ||||
| ```yaml | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   with: | ||||
|     path: ~/go/pkg/mod | ||||
|     key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | ||||
| @ -108,27 +120,20 @@ steps: | ||||
| We cache the elements of the Cabal store separately, as the entirety of `~/.cabal` can grow very large for projects with many dependencies. | ||||
| 
 | ||||
| ```yaml | ||||
| - uses: actions/cache@v1 | ||||
|   name: Cache ~/.cabal/packages | ||||
| - uses: actions/cache@v2 | ||||
|   name: Cache ~/.cabal/packages, ~/.cabal/store and dist-newstyle | ||||
|   with: | ||||
|     path: ~/.cabal/packages | ||||
|     key: ${{ runner.os }}-${{ matrix.ghc }}-cabal-packages | ||||
| - uses: actions/cache@v1 | ||||
|   name: Cache ~/.cabal/store | ||||
|   with: | ||||
|     path: ~/.cabal/store | ||||
|     key: ${{ runner.os }}-${{ matrix.ghc }}-cabal-store | ||||
| - uses: actions/cache@v1 | ||||
|   name: Cache dist-newstyle | ||||
|   with: | ||||
|     path: dist-newstyle | ||||
|     key: ${{ runner.os }}-${{ matrix.ghc }}-dist-newstyle | ||||
|     path: | | ||||
|       ~/.cabal/packages | ||||
|       ~/.cabal/store | ||||
|       dist-newstyle | ||||
|     key: ${{ runner.os }}-${{ matrix.ghc }} | ||||
| ``` | ||||
| 
 | ||||
| ## Java - Gradle | ||||
| 
 | ||||
| ```yaml | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   with: | ||||
|     path: ~/.gradle/caches | ||||
|     key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} | ||||
| @ -139,7 +144,7 @@ We cache the elements of the Cabal store separately, as the entirety of `~/.caba | ||||
| ## Java - Maven | ||||
| 
 | ||||
| ```yaml | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   with: | ||||
|     path: ~/.m2/repository | ||||
|     key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | ||||
| @ -156,7 +161,7 @@ For npm, cache files are stored in `~/.npm` on Posix, or `%AppData%/npm-cache` o | ||||
| ### macOS and Ubuntu | ||||
| 
 | ||||
| ```yaml | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   with: | ||||
|     path: ~/.npm | ||||
|     key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | ||||
| @ -171,7 +176,7 @@ For npm, cache files are stored in `~/.npm` on Posix, or `%AppData%/npm-cache` o | ||||
|   id: npm-cache | ||||
|   run: | | ||||
|     echo "::set-output name=dir::$(npm config get cache)" | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   with: | ||||
|     path: ${{ steps.npm-cache.outputs.dir }} | ||||
|     key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | ||||
| @ -186,7 +191,7 @@ For npm, cache files are stored in `~/.npm` on Posix, or `%AppData%/npm-cache` o | ||||
|   id: npm-cache | ||||
|   run: | | ||||
|     echo "::set-output name=dir::$(npm config get cache)" | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   with: | ||||
|     path: ${{ steps.npm-cache.outputs.dir }} | ||||
|     key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | ||||
| @ -196,10 +201,9 @@ For npm, cache files are stored in `~/.npm` on Posix, or `%AppData%/npm-cache` o | ||||
| 
 | ||||
| ## Node - Lerna | ||||
| 
 | ||||
| >Note this example uses the new multi-paths feature and is only available at `master` | ||||
| ```yaml | ||||
| - name: restore lerna | ||||
|   uses: actions/cache@master | ||||
|   uses: actions/cache@v2 | ||||
|   with: | ||||
|     path: | | ||||
|       node_modules | ||||
| @ -215,7 +219,7 @@ The yarn cache directory will depend on your operating system and version of `ya | ||||
|   id: yarn-cache-dir-path | ||||
|   run: echo "::set-output name=dir::$(yarn cache dir)" | ||||
| 
 | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) | ||||
|   with: | ||||
|     path: ${{ steps.yarn-cache-dir-path.outputs.dir }} | ||||
| @ -229,7 +233,7 @@ Esy allows you to export built dependencies and import pre-built dependencies. | ||||
| ```yaml | ||||
|     - name: Restore Cache | ||||
|       id: restore-cache | ||||
|       uses: actions/cache@v1 | ||||
|       uses: actions/cache@v2 | ||||
|       with: | ||||
|         path: _export | ||||
|         key:  ${{ runner.os }}-esy-${{ hashFiles('esy.lock/index.json') }} | ||||
| @ -259,7 +263,7 @@ Esy allows you to export built dependencies and import pre-built dependencies. | ||||
|   id: composer-cache | ||||
|   run: | | ||||
|     echo "::set-output name=dir::$(composer config cache-files-dir)" | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   with: | ||||
|     path: ${{ steps.composer-cache.outputs.dir }} | ||||
|     key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} | ||||
| @ -278,7 +282,7 @@ Locations: | ||||
| 
 | ||||
| ### Simple example | ||||
| ```yaml | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   with: | ||||
|     path: ~/.cache/pip | ||||
|     key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} | ||||
| @ -291,7 +295,7 @@ Replace `~/.cache/pip` with the correct `path` if not using Ubuntu. | ||||
| ### Multiple OS's in a workflow | ||||
| 
 | ||||
| ```yaml | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   if: startsWith(runner.os, 'Linux') | ||||
|   with: | ||||
|     path: ~/.cache/pip | ||||
| @ -299,7 +303,7 @@ Replace `~/.cache/pip` with the correct `path` if not using Ubuntu. | ||||
|     restore-keys: | | ||||
|       ${{ runner.os }}-pip- | ||||
| 
 | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   if: startsWith(runner.os, 'macOS') | ||||
|   with: | ||||
|     path: ~/Library/Caches/pip | ||||
| @ -307,7 +311,7 @@ Replace `~/.cache/pip` with the correct `path` if not using Ubuntu. | ||||
|     restore-keys: | | ||||
|       ${{ runner.os }}-pip- | ||||
| 
 | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   if: startsWith(runner.os, 'Windows') | ||||
|   with: | ||||
|     path: ~\AppData\Local\pip\Cache | ||||
| @ -326,7 +330,7 @@ Replace `~/.cache/pip` with the correct `path` if not using Ubuntu. | ||||
|     echo "::set-output name=dir::$(pip cache dir)" | ||||
| 
 | ||||
| - name: pip cache | ||||
|   uses: actions/cache@v1 | ||||
|   uses: actions/cache@v2 | ||||
|   with: | ||||
|     path: ${{ steps.pip-cache.outputs.dir }} | ||||
|     key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} | ||||
| @ -343,7 +347,7 @@ Replace `~/.cache/pip` with the correct `path` if not using Ubuntu. | ||||
|  run: | | ||||
|    python -c "from pip._internal.locations import USER_CACHE_DIR; print('::set-output name=dir::' + USER_CACHE_DIR)" | ||||
| 
 | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   with: | ||||
|     path: ${{ steps.pip-cache.outputs.dir }} | ||||
|     key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} | ||||
| @ -362,7 +366,7 @@ Locations: | ||||
| 
 | ||||
| ### Simple example | ||||
| ```yaml | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   with: | ||||
|     path: ~/.local/share/renv | ||||
|     key: ${{ runner.os }}-renv-${{ hashFiles('**/renv.lock') }} | ||||
| @ -375,7 +379,7 @@ Replace `~/.local/share/renv` with the correct `path` if not using Ubuntu. | ||||
| ### Multiple OS's in a workflow | ||||
| 
 | ||||
| ```yaml | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   if: startsWith(runner.os, 'Linux') | ||||
|   with: | ||||
|     path: ~/.local/share/renv | ||||
| @ -383,7 +387,7 @@ Replace `~/.local/share/renv` with the correct `path` if not using Ubuntu. | ||||
|     restore-keys: | | ||||
|       ${{ runner.os }}-renv- | ||||
| 
 | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   if: startsWith(runner.os, 'macOS') | ||||
|   with: | ||||
|     path: ~/Library/Application Support/renv | ||||
| @ -391,7 +395,7 @@ Replace `~/.local/share/renv` with the correct `path` if not using Ubuntu. | ||||
|     restore-keys: | | ||||
|       ${{ runner.os }}-renv- | ||||
| 
 | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   if: startsWith(runner.os, 'Windows') | ||||
|   with: | ||||
|     path: ~\AppData\Local\renv | ||||
| @ -403,7 +407,7 @@ Replace `~/.local/share/renv` with the correct `path` if not using Ubuntu. | ||||
| ## Ruby - Bundler | ||||
| 
 | ||||
| ```yaml | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   with: | ||||
|     path: vendor/bundle | ||||
|     key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} | ||||
| @ -422,42 +426,31 @@ When dependencies are installed later in the workflow, we must specify the same | ||||
| ## Rust - Cargo | ||||
| 
 | ||||
| ```yaml | ||||
| - name: Cache cargo registry | ||||
|   uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   with: | ||||
|     path: ~/.cargo/registry | ||||
|     key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} | ||||
| - name: Cache cargo index | ||||
|   uses: actions/cache@v1 | ||||
|   with: | ||||
|     path: ~/.cargo/git | ||||
|     key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }} | ||||
| - name: Cache cargo build | ||||
|   uses: actions/cache@v1 | ||||
|   with: | ||||
|     path: target | ||||
|     key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} | ||||
|     path: | | ||||
|       ~/.cargo/registry | ||||
|       ~/.cargo/git | ||||
|       target | ||||
|     key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | ||||
| ``` | ||||
| 
 | ||||
| ## Scala - SBT | ||||
| 
 | ||||
| ```yaml | ||||
| - name: Cache SBT ivy cache | ||||
|   uses: actions/cache@v1 | ||||
|   with: | ||||
|     path: ~/.ivy2/cache | ||||
|     key: ${{ runner.os }}-sbt-ivy-cache-${{ hashFiles('**/build.sbt') }} | ||||
| - name: Cache SBT | ||||
|   uses: actions/cache@v1 | ||||
|   uses: actions/cache@v2 | ||||
|   with: | ||||
|     path: ~/.sbt | ||||
|     path: |  | ||||
|       ~/.ivy2/cache | ||||
|       ~/.sbt | ||||
|     key: ${{ runner.os }}-sbt-${{ hashFiles('**/build.sbt') }} | ||||
| ``` | ||||
| 
 | ||||
| ## Swift, Objective-C - Carthage | ||||
| 
 | ||||
| ```yaml | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   with: | ||||
|     path: Carthage | ||||
|     key: ${{ runner.os }}-carthage-${{ hashFiles('**/Cartfile.resolved') }} | ||||
| @ -468,7 +461,7 @@ When dependencies are installed later in the workflow, we must specify the same | ||||
| ## Swift, Objective-C - CocoaPods | ||||
| 
 | ||||
| ```yaml | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   with: | ||||
|     path: Pods | ||||
|     key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }} | ||||
| @ -479,7 +472,7 @@ When dependencies are installed later in the workflow, we must specify the same | ||||
| ## Swift - Swift Package Manager | ||||
| 
 | ||||
| ```yaml | ||||
| - uses: actions/cache@v1 | ||||
| - uses: actions/cache@v2 | ||||
|   with: | ||||
|     path: .build | ||||
|     key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }} | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user