mirror of
				https://gitea.com/actions/cache.git
				synced 2025-10-31 07:47:07 +00:00 
			
		
		
		
	Compare commits
	
		
			4 Commits
		
	
	
		
			t-dedah/up
			...
			test-fast
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 47ad7e4077 | ||
|   | 64d30fb518 | ||
|   | 1a2d984507 | ||
|   | 7ca5bf5d35 | 
							
								
								
									
										2
									
								
								.github/workflows/workflow.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/workflow.yml
									
									
									
									
										vendored
									
									
								
							| @@ -34,7 +34,7 @@ jobs: | |||||||
|       run: | |       run: | | ||||||
|         echo "::set-output name=dir::$(npm config get cache)" |         echo "::set-output name=dir::$(npm config get cache)" | ||||||
|     - name: Restore npm cache |     - name: Restore npm cache | ||||||
|       uses: actions/cache@v3 |       uses: actions/cache@v2 | ||||||
|       with: |       with: | ||||||
|         path: ${{ steps.npm-cache.outputs.dir }} |         path: ${{ steps.npm-cache.outputs.dir }} | ||||||
|         key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} |         key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								.licenses/npm/@actions/cache.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								.licenses/npm/@actions/cache.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,9 +1,9 @@ | |||||||
| --- | --- | ||||||
| name: "@actions/cache" | name: "@actions/cache" | ||||||
| version: 2.0.2 | version: 1.0.9 | ||||||
| type: npm | type: npm | ||||||
| summary:  | summary: Actions cache lib | ||||||
| homepage:  | homepage: https://github.com/actions/toolkit/tree/main/packages/cache | ||||||
| license: mit | license: mit | ||||||
| licenses: | licenses: | ||||||
| - sources: LICENSE.md | - sources: LICENSE.md | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								.licenses/npm/@actions/exec.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								.licenses/npm/@actions/exec.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,9 +1,9 @@ | |||||||
| --- | --- | ||||||
| name: "@actions/exec" | name: "@actions/exec" | ||||||
| version: 1.1.1 | version: 1.1.0 | ||||||
| type: npm | type: npm | ||||||
| summary:  | summary: Actions exec lib | ||||||
| homepage:  | homepage: https://github.com/actions/toolkit/tree/main/packages/exec | ||||||
| license: mit | license: mit | ||||||
| licenses: | licenses: | ||||||
| - sources: LICENSE.md | - sources: LICENSE.md | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								.licenses/npm/@actions/io.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								.licenses/npm/@actions/io.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,9 +1,9 @@ | |||||||
| --- | --- | ||||||
| name: "@actions/io" | name: "@actions/io" | ||||||
| version: 1.1.2 | version: 1.1.1 | ||||||
| type: npm | type: npm | ||||||
| summary:  | summary: Actions io lib | ||||||
| homepage:  | homepage: https://github.com/actions/toolkit/tree/main/packages/io | ||||||
| license: mit | license: mit | ||||||
| licenses: | licenses: | ||||||
| - sources: LICENSE.md | - sources: LICENSE.md | ||||||
|   | |||||||
| @@ -1,9 +1,9 @@ | |||||||
| --- | --- | ||||||
| name: "@azure/core-asynciterator-polyfill" | name: "@azure/core-asynciterator-polyfill" | ||||||
| version: 1.0.2 | version: 1.0.0 | ||||||
| type: npm | type: npm | ||||||
| summary:  | summary: Polyfill for IE/Node 8 for Symbol.asyncIterator | ||||||
| homepage:  | homepage: https://github.com/Azure/azure-sdk-for-js/tree/master/sdk/core/core-asynciterator-polyfill | ||||||
| license: mit | license: mit | ||||||
| licenses: | licenses: | ||||||
| - sources: LICENSE | - sources: LICENSE | ||||||
|   | |||||||
							
								
								
									
										7
									
								
								.licenses/npm/@azure/core-lro.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										7
									
								
								.licenses/npm/@azure/core-lro.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,9 +1,10 @@ | |||||||
| --- | --- | ||||||
| name: "@azure/core-lro" | name: "@azure/core-lro" | ||||||
| version: 2.2.4 | version: 2.2.3 | ||||||
| type: npm | type: npm | ||||||
| summary:  | summary: Isomorphic client library for supporting long-running operations in node.js | ||||||
| homepage:  |   and browser. | ||||||
|  | homepage: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/core-lro/README.md | ||||||
| license: mit | license: mit | ||||||
| licenses: | licenses: | ||||||
| - sources: LICENSE | - sources: LICENSE | ||||||
|   | |||||||
							
								
								
									
										7
									
								
								.licenses/npm/@azure/ms-rest-js.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										7
									
								
								.licenses/npm/@azure/ms-rest-js.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,9 +1,10 @@ | |||||||
| --- | --- | ||||||
| name: "@azure/ms-rest-js" | name: "@azure/ms-rest-js" | ||||||
| version: 2.6.1 | version: 2.6.0 | ||||||
| type: npm | type: npm | ||||||
| summary:  | summary: Isomorphic client Runtime for Typescript/node.js/browser javascript client | ||||||
| homepage:  |   libraries generated using AutoRest | ||||||
|  | homepage: https://github.com/Azure/ms-rest-js | ||||||
| license: mit | license: mit | ||||||
| licenses: | licenses: | ||||||
| - sources: LICENSE | - sources: LICENSE | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								.licenses/npm/@azure/storage-blob.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								.licenses/npm/@azure/storage-blob.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,9 +1,9 @@ | |||||||
| --- | --- | ||||||
| name: "@azure/storage-blob" | name: "@azure/storage-blob" | ||||||
| version: 12.9.0 | version: 12.8.0 | ||||||
| type: npm | type: npm | ||||||
| summary:  | summary: Microsoft Azure Storage SDK for JavaScript - Blob | ||||||
| homepage:  | homepage: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/storage/storage-blob/ | ||||||
| license: mit | license: mit | ||||||
| licenses: | licenses: | ||||||
| - sources: LICENSE | - sources: LICENSE | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								.licenses/npm/@types/node-fetch.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								.licenses/npm/@types/node-fetch.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,9 +1,9 @@ | |||||||
| --- | --- | ||||||
| name: "@types/node-fetch" | name: "@types/node-fetch" | ||||||
| version: 2.6.1 | version: 2.5.12 | ||||||
| type: npm | type: npm | ||||||
| summary:  | summary: TypeScript definitions for node-fetch | ||||||
| homepage:  | homepage: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node-fetch | ||||||
| license: mit | license: mit | ||||||
| licenses: | licenses: | ||||||
| - sources: LICENSE | - sources: LICENSE | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								.licenses/npm/@types/node.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								.licenses/npm/@types/node.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,9 +1,9 @@ | |||||||
| --- | --- | ||||||
| name: "@types/node" | name: "@types/node" | ||||||
| version: 16.11.26 | version: 12.20.42 | ||||||
| type: npm | type: npm | ||||||
| summary:  | summary: TypeScript definitions for Node.js | ||||||
| homepage:  | homepage: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node | ||||||
| license: mit | license: mit | ||||||
| licenses: | licenses: | ||||||
| - sources: LICENSE | - sources: LICENSE | ||||||
|   | |||||||
							
								
								
									
										28
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								README.md
									
									
									
									
									
								
							| @@ -2,25 +2,19 @@ | |||||||
|  |  | ||||||
| This action allows caching dependencies and build outputs to improve workflow execution time. | This action allows caching dependencies and build outputs to improve workflow execution time. | ||||||
|  |  | ||||||
| [](https://github.com/actions/cache/actions/workflows/workflow.yml) | <a href="https://github.com/actions/cache/actions?query=workflow%3ATests"><img alt="GitHub Actions status" src="https://github.com/actions/cache/workflows/Tests/badge.svg?branch=main&event=push"></a> | ||||||
|  |  | ||||||
| ## Documentation | ## Documentation | ||||||
|  |  | ||||||
| See ["Caching dependencies to speed up workflows"](https://help.github.com/github/automating-your-workflow-with-github-actions/caching-dependencies-to-speed-up-workflows). | 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 | ## What's New | ||||||
| ### v3 |  | ||||||
| * Added support for caching from GHES 3.5. |  | ||||||
| * Fixed download issue for files > 2GB during restore. |  | ||||||
| * Updated the minimum runner version support from node 12 -> node 16. |  | ||||||
|  |  | ||||||
| ### v2 |  | ||||||
| * Increased the cache size limit to 10 GB. |  | ||||||
| * Added support for multiple paths, [glob patterns](https://github.com/actions/toolkit/tree/main/packages/glob), and single file caches.  | * Added support for multiple paths, [glob patterns](https://github.com/actions/toolkit/tree/main/packages/glob), and single file caches.  | ||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| - name: Cache multiple paths | - name: Cache multiple paths | ||||||
|   uses: actions/cache@v3 |   uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: | |     path: | | ||||||
|       ~/cache |       ~/cache | ||||||
| @@ -75,7 +69,7 @@ jobs: | |||||||
|  |  | ||||||
|     - name: Cache Primes |     - name: Cache Primes | ||||||
|       id: cache-primes |       id: cache-primes | ||||||
|       uses: actions/cache@v3 |       uses: actions/cache@v2 | ||||||
|       with: |       with: | ||||||
|         path: prime-numbers |         path: prime-numbers | ||||||
|         key: ${{ runner.os }}-primes |         key: ${{ runner.os }}-primes | ||||||
| @@ -94,13 +88,11 @@ Every programming language and framework has its own way of caching. | |||||||
|  |  | ||||||
| See [Examples](examples.md) for a list of `actions/cache` implementations for use with: | See [Examples](examples.md) for a list of `actions/cache` implementations for use with: | ||||||
|  |  | ||||||
| - [C# - NuGet](./examples.md#c---nuget) | - [C# - Nuget](./examples.md#c---nuget) | ||||||
| - [D - DUB](./examples.md#d---dub) | - [D - DUB](./examples.md#d---dub) | ||||||
| - [Deno](./examples.md#deno) |  | ||||||
| - [Elixir - Mix](./examples.md#elixir---mix) | - [Elixir - Mix](./examples.md#elixir---mix) | ||||||
| - [Go - Modules](./examples.md#go---modules) | - [Go - Modules](./examples.md#go---modules) | ||||||
| - [Haskell - Cabal](./examples.md#haskell---cabal) | - [Haskell - Cabal](./examples.md#haskell---cabal) | ||||||
| - [Haskell - Stack](./examples.md#haskell---stack) |  | ||||||
| - [Java - Gradle](./examples.md#java---gradle) | - [Java - Gradle](./examples.md#java---gradle) | ||||||
| - [Java - Maven](./examples.md#java---maven) | - [Java - Maven](./examples.md#java---maven) | ||||||
| - [Node - npm](./examples.md#node---npm) | - [Node - npm](./examples.md#node---npm) | ||||||
| @@ -125,7 +117,7 @@ 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. | 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 | ```yaml | ||||||
|   - uses: actions/cache@v3 |   - uses: actions/cache@v2 | ||||||
|     with: |     with: | ||||||
|       path: |  |       path: |  | ||||||
|         path/to/dependencies |         path/to/dependencies | ||||||
| @@ -143,7 +135,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")" |       echo "::set-output name=date::$(/bin/date -u "+%Y%m%d")" | ||||||
|     shell: bash |     shell: bash | ||||||
|  |  | ||||||
|   - uses: actions/cache@v3 |   - uses: actions/cache@v2 | ||||||
|     with: |     with: | ||||||
|       path: path/to/dependencies |       path: path/to/dependencies | ||||||
|       key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/lockfiles') }} |       key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/lockfiles') }} | ||||||
| @@ -164,7 +156,7 @@ Example: | |||||||
| steps: | steps: | ||||||
|   - uses: actions/checkout@v2 |   - uses: actions/checkout@v2 | ||||||
|  |  | ||||||
|   - uses: actions/cache@v3 |   - uses: actions/cache@v2 | ||||||
|     id: cache |     id: cache | ||||||
|     with: |     with: | ||||||
|       path: path/to/dependencies |       path: path/to/dependencies | ||||||
| @@ -177,6 +169,12 @@ steps: | |||||||
|  |  | ||||||
| > Note: The `id` defined in `actions/cache` must match the `id` in the `if` statement (i.e. `steps.[ID].outputs.cache-hit`) | > Note: The `id` defined in `actions/cache` must match the `id` in the `if` statement (i.e. `steps.[ID].outputs.cache-hit`) | ||||||
|  |  | ||||||
|  | ## Known limitation | ||||||
|  |  | ||||||
|  | - `action/cache` is currently not supported on GitHub Enterprise Server. <https://github.com/github/roadmap/issues/273> is tracking this. | ||||||
|  |  | ||||||
|  | Since GitHub Enterprise Server uses self-hosted runners, dependencies are typically cached on the runner by whatever dependency management tool is being used (npm, maven, etc.).  This eliminates the need for explicit caching in some scenarios. | ||||||
|  |  | ||||||
| ## Contributing | ## Contributing | ||||||
| We would love for you to contribute to `actions/cache`, pull requests are welcome! Please see the [CONTRIBUTING.md](CONTRIBUTING.md) for more information. | We would love for you to contribute to `actions/cache`, pull requests are welcome! Please see the [CONTRIBUTING.md](CONTRIBUTING.md) for more information. | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,8 +0,0 @@ | |||||||
| # Releases |  | ||||||
|  |  | ||||||
| ### 3.0.0 |  | ||||||
| - Updated minimum runner version support from node 12 -> node 16 |  | ||||||
|  |  | ||||||
| ### 3.0.1 |  | ||||||
| - Added support for caching from GHES 3.5. |  | ||||||
| - Fixed download issue for files > 2GB during restore. |  | ||||||
| @@ -1,4 +1,3 @@ | |||||||
| import * as cache from "@actions/cache"; |  | ||||||
| import * as core from "@actions/core"; | import * as core from "@actions/core"; | ||||||
|  |  | ||||||
| import { Events, Outputs, RefKey, State } from "../src/constants"; | import { Events, Outputs, RefKey, State } from "../src/constants"; | ||||||
| @@ -6,7 +5,6 @@ import * as actionUtils from "../src/utils/actionUtils"; | |||||||
| import * as testUtils from "../src/utils/testUtils"; | import * as testUtils from "../src/utils/testUtils"; | ||||||
|  |  | ||||||
| jest.mock("@actions/core"); | jest.mock("@actions/core"); | ||||||
| jest.mock("@actions/cache"); |  | ||||||
|  |  | ||||||
| beforeAll(() => { | beforeAll(() => { | ||||||
|     jest.spyOn(core, "getInput").mockImplementation((name, options) => { |     jest.spyOn(core, "getInput").mockImplementation((name, options) => { | ||||||
| @@ -234,41 +232,3 @@ test("getInputAsInt throws if required and value missing", () => { | |||||||
|         actionUtils.getInputAsInt("undefined", { required: true }) |         actionUtils.getInputAsInt("undefined", { required: true }) | ||||||
|     ).toThrowError(); |     ).toThrowError(); | ||||||
| }); | }); | ||||||
|  |  | ||||||
| test("isCacheFeatureAvailable for ac enabled", () => { |  | ||||||
|     jest.spyOn(cache, "isFeatureAvailable").mockImplementation(() => true); |  | ||||||
|  |  | ||||||
|     expect(actionUtils.isCacheFeatureAvailable()).toBe(true); |  | ||||||
| }); |  | ||||||
|  |  | ||||||
| test("isCacheFeatureAvailable for ac disabled on GHES", () => { |  | ||||||
|     jest.spyOn(cache, "isFeatureAvailable").mockImplementation(() => false); |  | ||||||
|  |  | ||||||
|     const message = |  | ||||||
|         "Cache action is only supported on GHES version >= 3.5. If you are on version >=3.5 Please check with GHES admin if Actions cache service is enabled or not."; |  | ||||||
|     const infoMock = jest.spyOn(core, "info"); |  | ||||||
|  |  | ||||||
|     try { |  | ||||||
|         process.env["GITHUB_SERVER_URL"] = "http://example.com"; |  | ||||||
|         expect(actionUtils.isCacheFeatureAvailable()).toBe(false); |  | ||||||
|         expect(infoMock).toHaveBeenCalledWith(`[warning]${message}`); |  | ||||||
|     } finally { |  | ||||||
|         delete process.env["GITHUB_SERVER_URL"]; |  | ||||||
|     } |  | ||||||
| }); |  | ||||||
|  |  | ||||||
| test("isCacheFeatureAvailable for ac disabled on dotcom", () => { |  | ||||||
|     jest.spyOn(cache, "isFeatureAvailable").mockImplementation(() => false); |  | ||||||
|  |  | ||||||
|     const message = |  | ||||||
|         "An internal error has occurred in cache backend. Please check https://www.githubstatus.com/ for any ongoing issue in actions."; |  | ||||||
|     const infoMock = jest.spyOn(core, "info"); |  | ||||||
|  |  | ||||||
|     try { |  | ||||||
|         process.env["GITHUB_SERVER_URL"] = "http://github.com"; |  | ||||||
|         expect(actionUtils.isCacheFeatureAvailable()).toBe(false); |  | ||||||
|         expect(infoMock).toHaveBeenCalledWith(`[warning]${message}`); |  | ||||||
|     } finally { |  | ||||||
|         delete process.env["GITHUB_SERVER_URL"]; |  | ||||||
|     } |  | ||||||
| }); |  | ||||||
|   | |||||||
| @@ -34,9 +34,6 @@ beforeEach(() => { | |||||||
|     process.env[RefKey] = "refs/heads/feature-branch"; |     process.env[RefKey] = "refs/heads/feature-branch"; | ||||||
|  |  | ||||||
|     jest.spyOn(actionUtils, "isGhes").mockImplementation(() => false); |     jest.spyOn(actionUtils, "isGhes").mockImplementation(() => false); | ||||||
|     jest.spyOn(actionUtils, "isCacheFeatureAvailable").mockImplementation( |  | ||||||
|         () => true |  | ||||||
|     ); |  | ||||||
| }); | }); | ||||||
|  |  | ||||||
| afterEach(() => { | afterEach(() => { | ||||||
| @@ -58,12 +55,10 @@ test("restore with invalid event outputs warning", async () => { | |||||||
|     expect(failedMock).toHaveBeenCalledTimes(0); |     expect(failedMock).toHaveBeenCalledTimes(0); | ||||||
| }); | }); | ||||||
|  |  | ||||||
| test("restore without AC available should no-op", async () => { | test("restore on GHES should no-op", async () => { | ||||||
|     jest.spyOn(actionUtils, "isGhes").mockImplementation(() => false); |     jest.spyOn(actionUtils, "isGhes").mockImplementation(() => true); | ||||||
|     jest.spyOn(actionUtils, "isCacheFeatureAvailable").mockImplementation( |  | ||||||
|         () => false |  | ||||||
|     ); |  | ||||||
|  |  | ||||||
|  |     const logWarningMock = jest.spyOn(actionUtils, "logWarning"); | ||||||
|     const restoreCacheMock = jest.spyOn(cache, "restoreCache"); |     const restoreCacheMock = jest.spyOn(cache, "restoreCache"); | ||||||
|     const setCacheHitOutputMock = jest.spyOn(actionUtils, "setCacheHitOutput"); |     const setCacheHitOutputMock = jest.spyOn(actionUtils, "setCacheHitOutput"); | ||||||
|  |  | ||||||
| @@ -72,54 +67,9 @@ test("restore without AC available should no-op", async () => { | |||||||
|     expect(restoreCacheMock).toHaveBeenCalledTimes(0); |     expect(restoreCacheMock).toHaveBeenCalledTimes(0); | ||||||
|     expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1); |     expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1); | ||||||
|     expect(setCacheHitOutputMock).toHaveBeenCalledWith(false); |     expect(setCacheHitOutputMock).toHaveBeenCalledWith(false); | ||||||
| }); |     expect(logWarningMock).toHaveBeenCalledWith( | ||||||
|  |         "Cache action is not supported on GHES. See https://github.com/actions/cache/issues/505 for more details" | ||||||
| test("restore on GHES without AC available should no-op", async () => { |  | ||||||
|     jest.spyOn(actionUtils, "isGhes").mockImplementation(() => true); |  | ||||||
|     jest.spyOn(actionUtils, "isCacheFeatureAvailable").mockImplementation( |  | ||||||
|         () => false |  | ||||||
|     ); |     ); | ||||||
|  |  | ||||||
|     const restoreCacheMock = jest.spyOn(cache, "restoreCache"); |  | ||||||
|     const setCacheHitOutputMock = jest.spyOn(actionUtils, "setCacheHitOutput"); |  | ||||||
|  |  | ||||||
|     await run(); |  | ||||||
|  |  | ||||||
|     expect(restoreCacheMock).toHaveBeenCalledTimes(0); |  | ||||||
|     expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1); |  | ||||||
|     expect(setCacheHitOutputMock).toHaveBeenCalledWith(false); |  | ||||||
| }); |  | ||||||
|  |  | ||||||
| test("restore on GHES with AC available ", async () => { |  | ||||||
|     jest.spyOn(actionUtils, "isGhes").mockImplementation(() => true); |  | ||||||
|     const path = "node_modules"; |  | ||||||
|     const key = "node-test"; |  | ||||||
|     testUtils.setInputs({ |  | ||||||
|         path: path, |  | ||||||
|         key |  | ||||||
|     }); |  | ||||||
|  |  | ||||||
|     const infoMock = jest.spyOn(core, "info"); |  | ||||||
|     const failedMock = jest.spyOn(core, "setFailed"); |  | ||||||
|     const stateMock = jest.spyOn(core, "saveState"); |  | ||||||
|     const setCacheHitOutputMock = jest.spyOn(actionUtils, "setCacheHitOutput"); |  | ||||||
|     const restoreCacheMock = jest |  | ||||||
|         .spyOn(cache, "restoreCache") |  | ||||||
|         .mockImplementationOnce(() => { |  | ||||||
|             return Promise.resolve(key); |  | ||||||
|         }); |  | ||||||
|  |  | ||||||
|     await run(); |  | ||||||
|  |  | ||||||
|     expect(restoreCacheMock).toHaveBeenCalledTimes(1); |  | ||||||
|     expect(restoreCacheMock).toHaveBeenCalledWith([path], key, []); |  | ||||||
|  |  | ||||||
|     expect(stateMock).toHaveBeenCalledWith("CACHE_KEY", key); |  | ||||||
|     expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1); |  | ||||||
|     expect(setCacheHitOutputMock).toHaveBeenCalledWith(true); |  | ||||||
|  |  | ||||||
|     expect(infoMock).toHaveBeenCalledWith(`Cache restored from key: ${key}`); |  | ||||||
|     expect(failedMock).toHaveBeenCalledTimes(0); |  | ||||||
| }); | }); | ||||||
|  |  | ||||||
| test("restore with no path should fail", async () => { | test("restore with no path should fail", async () => { | ||||||
|   | |||||||
| @@ -54,9 +54,6 @@ beforeEach(() => { | |||||||
|     process.env[RefKey] = "refs/heads/feature-branch"; |     process.env[RefKey] = "refs/heads/feature-branch"; | ||||||
|  |  | ||||||
|     jest.spyOn(actionUtils, "isGhes").mockImplementation(() => false); |     jest.spyOn(actionUtils, "isGhes").mockImplementation(() => false); | ||||||
|     jest.spyOn(actionUtils, "isCacheFeatureAvailable").mockImplementation( |  | ||||||
|         () => true |  | ||||||
|     ); |  | ||||||
| }); | }); | ||||||
|  |  | ||||||
| afterEach(() => { | afterEach(() => { | ||||||
| @@ -104,67 +101,18 @@ test("save with no primary key in state outputs warning", async () => { | |||||||
|     expect(failedMock).toHaveBeenCalledTimes(0); |     expect(failedMock).toHaveBeenCalledTimes(0); | ||||||
| }); | }); | ||||||
|  |  | ||||||
| test("save without AC available should no-op", async () => { | test("save on GHES should no-op", async () => { | ||||||
|     jest.spyOn(actionUtils, "isCacheFeatureAvailable").mockImplementation( |     jest.spyOn(actionUtils, "isGhes").mockImplementation(() => true); | ||||||
|         () => false |  | ||||||
|     ); |  | ||||||
|  |  | ||||||
|  |     const logWarningMock = jest.spyOn(actionUtils, "logWarning"); | ||||||
|     const saveCacheMock = jest.spyOn(cache, "saveCache"); |     const saveCacheMock = jest.spyOn(cache, "saveCache"); | ||||||
|  |  | ||||||
|     await run(); |     await run(); | ||||||
|  |  | ||||||
|     expect(saveCacheMock).toHaveBeenCalledTimes(0); |     expect(saveCacheMock).toHaveBeenCalledTimes(0); | ||||||
| }); |     expect(logWarningMock).toHaveBeenCalledWith( | ||||||
|  |         "Cache action is not supported on GHES. See https://github.com/actions/cache/issues/505 for more details" | ||||||
| test("save on ghes without AC available should no-op", async () => { |  | ||||||
|     jest.spyOn(actionUtils, "isGhes").mockImplementation(() => true); |  | ||||||
|     jest.spyOn(actionUtils, "isCacheFeatureAvailable").mockImplementation( |  | ||||||
|         () => false |  | ||||||
|     ); |     ); | ||||||
|  |  | ||||||
|     const saveCacheMock = jest.spyOn(cache, "saveCache"); |  | ||||||
|  |  | ||||||
|     await run(); |  | ||||||
|  |  | ||||||
|     expect(saveCacheMock).toHaveBeenCalledTimes(0); |  | ||||||
| }); |  | ||||||
|  |  | ||||||
| test("save on GHES with AC available", async () => { |  | ||||||
|     jest.spyOn(actionUtils, "isGhes").mockImplementation(() => true); |  | ||||||
|     const failedMock = jest.spyOn(core, "setFailed"); |  | ||||||
|  |  | ||||||
|     const primaryKey = "Linux-node-bb828da54c148048dd17899ba9fda624811cfb43"; |  | ||||||
|     const savedCacheKey = "Linux-node-"; |  | ||||||
|  |  | ||||||
|     jest.spyOn(core, "getState") |  | ||||||
|         // Cache Entry State |  | ||||||
|         .mockImplementationOnce(() => { |  | ||||||
|             return savedCacheKey; |  | ||||||
|         }) |  | ||||||
|         // Cache Key State |  | ||||||
|         .mockImplementationOnce(() => { |  | ||||||
|             return primaryKey; |  | ||||||
|         }); |  | ||||||
|  |  | ||||||
|     const inputPath = "node_modules"; |  | ||||||
|     testUtils.setInput(Inputs.Path, inputPath); |  | ||||||
|     testUtils.setInput(Inputs.UploadChunkSize, "4000000"); |  | ||||||
|  |  | ||||||
|     const cacheId = 4; |  | ||||||
|     const saveCacheMock = jest |  | ||||||
|         .spyOn(cache, "saveCache") |  | ||||||
|         .mockImplementationOnce(() => { |  | ||||||
|             return Promise.resolve(cacheId); |  | ||||||
|         }); |  | ||||||
|  |  | ||||||
|     await run(); |  | ||||||
|  |  | ||||||
|     expect(saveCacheMock).toHaveBeenCalledTimes(1); |  | ||||||
|     expect(saveCacheMock).toHaveBeenCalledWith([inputPath], primaryKey, { |  | ||||||
|         uploadChunkSize: 4000000 |  | ||||||
|     }); |  | ||||||
|  |  | ||||||
|     expect(failedMock).toHaveBeenCalledTimes(0); |  | ||||||
| }); | }); | ||||||
|  |  | ||||||
| test("save with exact match returns early", async () => { | test("save with exact match returns early", async () => { | ||||||
|   | |||||||
| @@ -18,7 +18,7 @@ outputs: | |||||||
|   cache-hit: |   cache-hit: | ||||||
|     description: 'A boolean value to indicate an exact match was found for the primary key' |     description: 'A boolean value to indicate an exact match was found for the primary key' | ||||||
| runs: | runs: | ||||||
|   using: 'node16' |   using: 'node12' | ||||||
|   main: 'dist/restore/index.js' |   main: 'dist/restore/index.js' | ||||||
|   post: 'dist/save/index.js' |   post: 'dist/save/index.js' | ||||||
|   post-if: 'success()' |   post-if: 'success()' | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								actions-cache-1.0.9.tgz
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								actions-cache-1.0.9.tgz
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										2243
									
								
								dist/restore/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2243
									
								
								dist/restore/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2243
									
								
								dist/save/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2243
									
								
								dist/save/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										145
									
								
								examples.md
									
									
									
									
									
								
							
							
						
						
									
										145
									
								
								examples.md
									
									
									
									
									
								
							| @@ -4,22 +4,17 @@ | |||||||
| - [D - DUB](#d---dub) | - [D - DUB](#d---dub) | ||||||
|   - [POSIX](#posix) |   - [POSIX](#posix) | ||||||
|   - [Windows](#windows) |   - [Windows](#windows) | ||||||
| - [Deno](#deno) | - [Elixir - Mix](#elixir---mix) | ||||||
|  | - [Go - Modules](#go---modules) | ||||||
|   - [Linux](#linux) |   - [Linux](#linux) | ||||||
|   - [macOS](#macos) |   - [macOS](#macos) | ||||||
|   - [Windows](#windows-1) |   - [Windows](#windows-1) | ||||||
| - [Elixir - Mix](#elixir---mix) |  | ||||||
| - [Go - Modules](#go---modules) |  | ||||||
|   - [Linux](#linux-1) |  | ||||||
|   - [macOS](#macos-1) |  | ||||||
|   - [Windows](#windows-2) |  | ||||||
| - [Haskell - Cabal](#haskell---cabal) | - [Haskell - Cabal](#haskell---cabal) | ||||||
| - [Haskell - Stack](#haskell---stack) |  | ||||||
| - [Java - Gradle](#java---gradle) | - [Java - Gradle](#java---gradle) | ||||||
| - [Java - Maven](#java---maven) | - [Java - Maven](#java---maven) | ||||||
| - [Node - npm](#node---npm) | - [Node - npm](#node---npm) | ||||||
|   - [macOS and Ubuntu](#macos-and-ubuntu) |   - [macOS and Ubuntu](#macos-and-ubuntu) | ||||||
|   - [Windows](#windows-3) |   - [Windows](#windows-2) | ||||||
|   - [Using multiple systems and `npm config`](#using-multiple-systems-and-npm-config) |   - [Using multiple systems and `npm config`](#using-multiple-systems-and-npm-config) | ||||||
| - [Node - Lerna](#node---lerna) | - [Node - Lerna](#node---lerna) | ||||||
| - [Node - Yarn](#node---yarn) | - [Node - Yarn](#node---yarn) | ||||||
| @@ -33,6 +28,8 @@ | |||||||
|   - [Using pip to get cache location](#using-pip-to-get-cache-location) |   - [Using pip to get cache location](#using-pip-to-get-cache-location) | ||||||
| - [Python - pipenv](#python---pipenv) | - [Python - pipenv](#python---pipenv) | ||||||
| - [R - renv](#r---renv) | - [R - renv](#r---renv) | ||||||
|  |   - [Simple example](#simple-example-1) | ||||||
|  |   - [Multiple OS's in a workflow](#multiple-oss-in-a-workflow-1) | ||||||
| - [Ruby - Bundler](#ruby---bundler) | - [Ruby - Bundler](#ruby---bundler) | ||||||
| - [Rust - Cargo](#rust---cargo) | - [Rust - Cargo](#rust---cargo) | ||||||
| - [Scala - SBT](#scala---sbt) | - [Scala - SBT](#scala---sbt) | ||||||
| @@ -45,7 +42,7 @@ | |||||||
| Using [NuGet lock files](https://docs.microsoft.com/nuget/consume-packages/package-references-in-project-files#locking-dependencies): | Using [NuGet lock files](https://docs.microsoft.com/nuget/consume-packages/package-references-in-project-files#locking-dependencies): | ||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| - uses: actions/cache@v3 | - uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: ~/.nuget/packages |     path: ~/.nuget/packages | ||||||
|     key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} |     key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} | ||||||
| @@ -54,10 +51,10 @@ 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. | Depending on the environment, huge packages might be pre-installed in the global cache folder. | ||||||
| With `actions/cache@v3` you can now exclude unwanted packages with [exclude pattern](https://github.com/actions/toolkit/tree/main/packages/glob#exclude-patterns) | With `actions/cache@v2` you can now exclude unwanted packages with [exclude pattern](https://github.com/actions/toolkit/tree/main/packages/glob#exclude-patterns) | ||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| - uses: actions/cache@v3 | - uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: | |     path: | | ||||||
|       ~/.nuget/packages |       ~/.nuget/packages | ||||||
| @@ -69,12 +66,11 @@ With `actions/cache@v3` you can now exclude unwanted packages with [exclude patt | |||||||
|  |  | ||||||
| Or you could move the cache folder like below. | 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 | >Note: This workflow does not work for projects that require files to be placed in user profile package folder | ||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| env: | env: | ||||||
|   NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages |   NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages | ||||||
| steps: | steps: | ||||||
|   - uses: actions/cache@v3 |   - uses: actions/cache@v2 | ||||||
|     with: |     with: | ||||||
|       path: ${{ github.workspace }}/.nuget/packages |       path: ${{ github.workspace }}/.nuget/packages | ||||||
|       key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} |       key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} | ||||||
| @@ -87,7 +83,7 @@ steps: | |||||||
| ### POSIX | ### POSIX | ||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| - uses: actions/cache@v3 | - uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: ~/.dub |     path: ~/.dub | ||||||
|     key: ${{ runner.os }}-dub-${{ hashFiles('**/dub.json') }} |     key: ${{ runner.os }}-dub-${{ hashFiles('**/dub.json') }} | ||||||
| @@ -98,7 +94,7 @@ steps: | |||||||
| ### Windows | ### Windows | ||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| - uses: actions/cache@v3 | - uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: ~\AppData\Local\dub |     path: ~\AppData\Local\dub | ||||||
|     key: ${{ runner.os }}-dub-${{ hashFiles('**/dub.json') }} |     key: ${{ runner.os }}-dub-${{ hashFiles('**/dub.json') }} | ||||||
| @@ -106,46 +102,10 @@ steps: | |||||||
|       ${{ runner.os }}-dub- |       ${{ runner.os }}-dub- | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ## Deno |  | ||||||
|  |  | ||||||
| ### Linux |  | ||||||
|  |  | ||||||
| ```yaml |  | ||||||
| - uses: actions/cache@v3 |  | ||||||
|   with: |  | ||||||
|     path: | |  | ||||||
|       ~/.deno |  | ||||||
|       ~/.cache/deno |  | ||||||
|     key: ${{ runner.os }}-deno-${{ hashFiles('**/deps.ts') }} |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| ### macOS |  | ||||||
|  |  | ||||||
| ```yaml |  | ||||||
| - uses: actions/cache@v3 |  | ||||||
|   with: |  | ||||||
|     path: | |  | ||||||
|       ~/.deno |  | ||||||
|       ~/Library/Caches/deno |  | ||||||
|     key: ${{ runner.os }}-deno-${{ hashFiles('**/deps.ts') }} |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| ### Windows |  | ||||||
|  |  | ||||||
| ```yaml |  | ||||||
| - uses: actions/cache@v3 |  | ||||||
|   with: |  | ||||||
|     path: | |  | ||||||
|       ~\.deno |  | ||||||
|       %LocalAppData%\deno |  | ||||||
|     key: ${{ runner.os }}-deno-${{ hashFiles('**/deps.ts') }} |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ## Elixir - Mix | ## Elixir - Mix | ||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| - uses: actions/cache@v3 | - uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: | |     path: | | ||||||
|       deps |       deps | ||||||
| @@ -160,7 +120,7 @@ steps: | |||||||
| ### Linux | ### Linux | ||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| - uses: actions/cache@v3 | - uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: | |     path: | | ||||||
|       ~/.cache/go-build |       ~/.cache/go-build | ||||||
| @@ -173,7 +133,7 @@ steps: | |||||||
| ### macOS | ### macOS | ||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| - uses: actions/cache@v3 | - uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: | |     path: | | ||||||
|       ~/Library/Caches/go-build |       ~/Library/Caches/go-build | ||||||
| @@ -186,11 +146,11 @@ steps: | |||||||
| ### Windows | ### Windows | ||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| - uses: actions/cache@v3 | - uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: | |     path: | | ||||||
|       ~\AppData\Local\go-build |       %LocalAppData%\go-build | ||||||
|       ~\go\pkg\mod |       ~/go/pkg/mod | ||||||
|     key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} |     key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | ||||||
|     restore-keys: | |     restore-keys: | | ||||||
|       ${{ runner.os }}-go- |       ${{ runner.os }}-go- | ||||||
| @@ -202,7 +162,7 @@ We cache the elements of the Cabal store separately, as the entirety of `~/.caba | |||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| - name: Cache ~/.cabal/packages, ~/.cabal/store and dist-newstyle | - name: Cache ~/.cabal/packages, ~/.cabal/store and dist-newstyle | ||||||
|   uses: actions/cache@v3 |   uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: | |     path: | | ||||||
|       ~/.cabal/packages |       ~/.cabal/packages | ||||||
| @@ -212,31 +172,12 @@ We cache the elements of the Cabal store separately, as the entirety of `~/.caba | |||||||
|     restore-keys: ${{ runner.os }}-${{ matrix.ghc }}- |     restore-keys: ${{ runner.os }}-${{ matrix.ghc }}- | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ## Haskell - Stack |  | ||||||
|  |  | ||||||
| ```yaml |  | ||||||
| - uses: actions/cache@v3 |  | ||||||
|   name: Cache ~/.stack |  | ||||||
|   with: |  | ||||||
|     path: ~/.stack |  | ||||||
|     key: ${{ runner.os }}-stack-global-${{ hashFiles('stack.yaml') }}-${{ hashFiles('package.yaml') }} |  | ||||||
|     restore-keys: | |  | ||||||
|       ${{ runner.os }}-stack-global- |  | ||||||
| - uses: actions/cache@v3 |  | ||||||
|   name: Cache .stack-work |  | ||||||
|   with: |  | ||||||
|     path: .stack-work |  | ||||||
|     key: ${{ runner.os }}-stack-work-${{ hashFiles('stack.yaml') }}-${{ hashFiles('package.yaml') }}-${{ hashFiles('**/*.hs') }} |  | ||||||
|     restore-keys: | |  | ||||||
|       ${{ runner.os }}-stack-work- |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| ## Java - Gradle | ## Java - Gradle | ||||||
|  |  | ||||||
| >Note: Ensure no Gradle daemons are running anymore when your workflow completes. Creating the cache package might fail due to locks being held by Gradle. Refer to the [Gradle Daemon documentation](https://docs.gradle.org/current/userguide/gradle_daemon.html) on how to disable or stop the Gradle Daemons. | >Note: Ensure no Gradle daemons are running anymore when your workflow completes. Creating the cache package might fail due to locks being held by Gradle. Refer to the [Gradle Daemon documentation](https://docs.gradle.org/current/userguide/gradle_daemon.html) on how to disable or stop the Gradle Daemons. | ||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| - uses: actions/cache@v3 | - uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: | |     path: | | ||||||
|       ~/.gradle/caches |       ~/.gradle/caches | ||||||
| @@ -250,7 +191,7 @@ We cache the elements of the Cabal store separately, as the entirety of `~/.caba | |||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| - name: Cache local Maven repository | - name: Cache local Maven repository | ||||||
|   uses: actions/cache@v3 |   uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: ~/.m2/repository |     path: ~/.m2/repository | ||||||
|     key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} |     key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | ||||||
| @@ -269,7 +210,7 @@ If using `npm config` to retrieve the cache directory, ensure you run [actions/s | |||||||
| ### macOS and Ubuntu | ### macOS and Ubuntu | ||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| - uses: actions/cache@v3 | - uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: ~/.npm |     path: ~/.npm | ||||||
|     key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} |     key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | ||||||
| @@ -284,7 +225,7 @@ If using `npm config` to retrieve the cache directory, ensure you run [actions/s | |||||||
|   id: npm-cache |   id: npm-cache | ||||||
|   run: | |   run: | | ||||||
|     echo "::set-output name=dir::$(npm config get cache)" |     echo "::set-output name=dir::$(npm config get cache)" | ||||||
| - uses: actions/cache@v3 | - uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: ${{ steps.npm-cache.outputs.dir }} |     path: ${{ steps.npm-cache.outputs.dir }} | ||||||
|     key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} |     key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | ||||||
| @@ -299,7 +240,7 @@ If using `npm config` to retrieve the cache directory, ensure you run [actions/s | |||||||
|   id: npm-cache-dir |   id: npm-cache-dir | ||||||
|   run: | |   run: | | ||||||
|     echo "::set-output name=dir::$(npm config get cache)" |     echo "::set-output name=dir::$(npm config get cache)" | ||||||
| - uses: actions/cache@v3 | - uses: actions/cache@v2 | ||||||
|   id: npm-cache # use this to check for `cache-hit` ==> if: steps.npm-cache.outputs.cache-hit != 'true' |   id: npm-cache # use this to check for `cache-hit` ==> if: steps.npm-cache.outputs.cache-hit != 'true' | ||||||
|   with: |   with: | ||||||
|     path: ${{ steps.npm-cache-dir.outputs.dir }} |     path: ${{ steps.npm-cache-dir.outputs.dir }} | ||||||
| @@ -312,9 +253,11 @@ If using `npm config` to retrieve the cache directory, ensure you run [actions/s | |||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| - name: restore lerna | - name: restore lerna | ||||||
|   uses: actions/cache@v3 |   uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: **/node_modules |     path: | | ||||||
|  |       node_modules | ||||||
|  |       */*/node_modules | ||||||
|     key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} |     key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }} | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| @@ -326,7 +269,7 @@ The yarn cache directory will depend on your operating system and version of `ya | |||||||
|   id: yarn-cache-dir-path |   id: yarn-cache-dir-path | ||||||
|   run: echo "::set-output name=dir::$(yarn cache dir)" |   run: echo "::set-output name=dir::$(yarn cache dir)" | ||||||
|  |  | ||||||
| - uses: actions/cache@v3 | - uses: actions/cache@v2 | ||||||
|   id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) |   id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) | ||||||
|   with: |   with: | ||||||
|     path: ${{ steps.yarn-cache-dir-path.outputs.dir }} |     path: ${{ steps.yarn-cache-dir-path.outputs.dir }} | ||||||
| @@ -344,7 +287,7 @@ The yarn 2 cache directory will depend on your config. See https://yarnpkg.com/c | |||||||
|   id: yarn-cache-dir-path |   id: yarn-cache-dir-path | ||||||
|   run: echo "::set-output name=dir::$(yarn config get cacheFolder)" |   run: echo "::set-output name=dir::$(yarn config get cacheFolder)" | ||||||
|  |  | ||||||
| - uses: actions/cache@v3 | - uses: actions/cache@v2 | ||||||
|   id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) |   id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) | ||||||
|   with: |   with: | ||||||
|     path: ${{ steps.yarn-cache-dir-path.outputs.dir }} |     path: ${{ steps.yarn-cache-dir-path.outputs.dir }} | ||||||
| @@ -359,7 +302,7 @@ Esy allows you to export built dependencies and import pre-built dependencies. | |||||||
| ```yaml | ```yaml | ||||||
|     - name: Restore Cache |     - name: Restore Cache | ||||||
|       id: restore-cache |       id: restore-cache | ||||||
|       uses: actions/cache@v3 |       uses: actions/cache@v2 | ||||||
|       with: |       with: | ||||||
|         path: _export |         path: _export | ||||||
|         key:  ${{ runner.os }}-esy-${{ hashFiles('esy.lock/index.json') }} |         key:  ${{ runner.os }}-esy-${{ hashFiles('esy.lock/index.json') }} | ||||||
| @@ -388,7 +331,7 @@ Esy allows you to export built dependencies and import pre-built dependencies. | |||||||
|   id: composer-cache |   id: composer-cache | ||||||
|   run: | |   run: | | ||||||
|     echo "::set-output name=dir::$(composer config cache-files-dir)" |     echo "::set-output name=dir::$(composer config cache-files-dir)" | ||||||
| - uses: actions/cache@v3 | - uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: ${{ steps.composer-cache.outputs.dir }} |     path: ${{ steps.composer-cache.outputs.dir }} | ||||||
|     key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} |     key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} | ||||||
| @@ -409,7 +352,7 @@ Locations: | |||||||
| ### Simple example | ### Simple example | ||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| - uses: actions/cache@v3 | - uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: ~/.cache/pip |     path: ~/.cache/pip | ||||||
|     key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} |     key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} | ||||||
| @@ -422,7 +365,7 @@ Replace `~/.cache/pip` with the correct `path` if not using Ubuntu. | |||||||
| ### Multiple OS's in a workflow | ### Multiple OS's in a workflow | ||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| - uses: actions/cache@v3 | - uses: actions/cache@v2 | ||||||
|   if: startsWith(runner.os, 'Linux') |   if: startsWith(runner.os, 'Linux') | ||||||
|   with: |   with: | ||||||
|     path: ~/.cache/pip |     path: ~/.cache/pip | ||||||
| @@ -430,7 +373,7 @@ Replace `~/.cache/pip` with the correct `path` if not using Ubuntu. | |||||||
|     restore-keys: | |     restore-keys: | | ||||||
|       ${{ runner.os }}-pip- |       ${{ runner.os }}-pip- | ||||||
|  |  | ||||||
| - uses: actions/cache@v3 | - uses: actions/cache@v2 | ||||||
|   if: startsWith(runner.os, 'macOS') |   if: startsWith(runner.os, 'macOS') | ||||||
|   with: |   with: | ||||||
|     path: ~/Library/Caches/pip |     path: ~/Library/Caches/pip | ||||||
| @@ -438,7 +381,7 @@ Replace `~/.cache/pip` with the correct `path` if not using Ubuntu. | |||||||
|     restore-keys: | |     restore-keys: | | ||||||
|       ${{ runner.os }}-pip- |       ${{ runner.os }}-pip- | ||||||
|  |  | ||||||
| - uses: actions/cache@v3 | - uses: actions/cache@v2 | ||||||
|   if: startsWith(runner.os, 'Windows') |   if: startsWith(runner.os, 'Windows') | ||||||
|   with: |   with: | ||||||
|     path: ~\AppData\Local\pip\Cache |     path: ~\AppData\Local\pip\Cache | ||||||
| @@ -464,7 +407,7 @@ jobs: | |||||||
|         - os: windows-latest |         - os: windows-latest | ||||||
|           path: ~\AppData\Local\pip\Cache |           path: ~\AppData\Local\pip\Cache | ||||||
|     steps: |     steps: | ||||||
|     - uses: actions/cache@v3 |     - uses: actions/cache@v2 | ||||||
|       with: |       with: | ||||||
|         path: ${{ matrix.path }} |         path: ${{ matrix.path }} | ||||||
|         key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} |         key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} | ||||||
| @@ -482,7 +425,7 @@ jobs: | |||||||
|     echo "::set-output name=dir::$(pip cache dir)" |     echo "::set-output name=dir::$(pip cache dir)" | ||||||
|  |  | ||||||
| - name: pip cache | - name: pip cache | ||||||
|   uses: actions/cache@v3 |   uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: ${{ steps.pip-cache.outputs.dir }} |     path: ${{ steps.pip-cache.outputs.dir }} | ||||||
|     key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} |     key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} | ||||||
| @@ -500,7 +443,7 @@ jobs: | |||||||
|  |  | ||||||
|   ⋮ |   ⋮ | ||||||
|  |  | ||||||
| - uses: actions/cache@v3 | - uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: ~/.local/share/virtualenvs |     path: ~/.local/share/virtualenvs | ||||||
|     key: ${{ runner.os }}-python-${{ steps.setup-python.outputs.python-version }}-pipenv-${{ hashFiles('Pipfile.lock') }} |     key: ${{ runner.os }}-python-${{ steps.setup-python.outputs.python-version }}-pipenv-${{ hashFiles('Pipfile.lock') }} | ||||||
| @@ -527,7 +470,7 @@ For renv, the cache directory will vary by OS. The `RENV_PATHS_ROOT` environment | |||||||
|     cat("##[set-output name=r-version;]", R.Version()$version.string, sep = "") |     cat("##[set-output name=r-version;]", R.Version()$version.string, sep = "") | ||||||
|   shell: Rscript {0} |   shell: Rscript {0} | ||||||
| - name: Restore Renv package cache | - name: Restore Renv package cache | ||||||
|   uses: actions/cache@v3 |   uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: ${{ env.RENV_PATHS_ROOT }} |     path: ${{ env.RENV_PATHS_ROOT }} | ||||||
|     key: ${{ steps.get-version.outputs.os-version }}-${{ steps.get-version.outputs.r-version }}-${{ inputs.cache-version }}-${{ hashFiles('renv.lock') }} |     key: ${{ steps.get-version.outputs.os-version }}-${{ steps.get-version.outputs.r-version }}-${{ inputs.cache-version }}-${{ hashFiles('renv.lock') }} | ||||||
| @@ -553,7 +496,7 @@ whenever possible: | |||||||
| ## Rust - Cargo | ## Rust - Cargo | ||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| - uses: actions/cache@v3 | - uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: | |     path: | | ||||||
|       ~/.cargo/bin/ |       ~/.cargo/bin/ | ||||||
| @@ -568,7 +511,7 @@ whenever possible: | |||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| - name: Cache SBT | - name: Cache SBT | ||||||
|   uses: actions/cache@v3 |   uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: | |     path: | | ||||||
|       ~/.ivy2/cache |       ~/.ivy2/cache | ||||||
| @@ -579,7 +522,7 @@ whenever possible: | |||||||
| ## Swift, Objective-C - Carthage | ## Swift, Objective-C - Carthage | ||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| - uses: actions/cache@v3 | - uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: Carthage |     path: Carthage | ||||||
|     key: ${{ runner.os }}-carthage-${{ hashFiles('**/Cartfile.resolved') }} |     key: ${{ runner.os }}-carthage-${{ hashFiles('**/Cartfile.resolved') }} | ||||||
| @@ -590,7 +533,7 @@ whenever possible: | |||||||
| ## Swift, Objective-C - CocoaPods | ## Swift, Objective-C - CocoaPods | ||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| - uses: actions/cache@v3 | - uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: Pods |     path: Pods | ||||||
|     key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }} |     key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }} | ||||||
| @@ -601,7 +544,7 @@ whenever possible: | |||||||
| ## Swift - Swift Package Manager | ## Swift - Swift Package Manager | ||||||
|  |  | ||||||
| ```yaml | ```yaml | ||||||
| - uses: actions/cache@v3 | - uses: actions/cache@v2 | ||||||
|   with: |   with: | ||||||
|     path: .build |     path: .build | ||||||
|     key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }} |     key: ${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }} | ||||||
|   | |||||||
							
								
								
									
										4384
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4384
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										30
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								package.json
									
									
									
									
									
								
							| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "cache", |   "name": "cache", | ||||||
|   "version": "3.0.2", |   "version": "2.1.7", | ||||||
|   "private": true, |   "private": true, | ||||||
|   "description": "Cache dependencies and build outputs", |   "description": "Cache dependencies and build outputs", | ||||||
|   "main": "dist/restore/index.js", |   "main": "dist/restore/index.js", | ||||||
| @@ -23,29 +23,29 @@ | |||||||
|   "author": "GitHub", |   "author": "GitHub", | ||||||
|   "license": "MIT", |   "license": "MIT", | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@actions/cache": "^2.0.2", |     "@actions/cache": "file:actions-cache-1.0.9.tgz", | ||||||
|     "@actions/core": "^1.2.6", |     "@actions/core": "^1.2.6", | ||||||
|     "@actions/exec": "^1.1.1", |     "@actions/exec": "^1.0.1", | ||||||
|     "@actions/io": "^1.1.2" |     "@actions/io": "^1.1.0" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@types/jest": "^27.4.1", |     "@types/jest": "^27.4.0", | ||||||
|     "@types/nock": "^11.1.0", |     "@types/nock": "^11.1.0", | ||||||
|     "@types/node": "^16.11.26", |     "@types/node": "^12.20.42", | ||||||
|     "@typescript-eslint/eslint-plugin": "^5.16.0", |     "@typescript-eslint/eslint-plugin": "^5.10.1", | ||||||
|     "@typescript-eslint/parser": "^5.16.0", |     "@typescript-eslint/parser": "^5.10.1", | ||||||
|     "@zeit/ncc": "^0.20.5", |     "@zeit/ncc": "^0.20.5", | ||||||
|     "eslint": "^8.11.0", |     "eslint": "^8.8.0", | ||||||
|     "eslint-config-prettier": "^8.5.0", |     "eslint-config-prettier": "^8.3.0", | ||||||
|     "eslint-plugin-import": "^2.25.4", |     "eslint-plugin-import": "^2.25.4", | ||||||
|     "eslint-plugin-jest": "^26.1.3", |     "eslint-plugin-jest": "^26.0.0", | ||||||
|     "eslint-plugin-prettier": "^4.0.0", |     "eslint-plugin-prettier": "^4.0.0", | ||||||
|     "eslint-plugin-simple-import-sort": "^7.0.0", |     "eslint-plugin-simple-import-sort": "^7.0.0", | ||||||
|     "jest": "^27.5.1", |     "jest": "^27.4.7", | ||||||
|     "jest-circus": "^27.5.1", |     "jest-circus": "^27.4.6", | ||||||
|     "nock": "^11.7.0", |     "nock": "^11.7.0", | ||||||
|     "prettier": "^2.6.1", |     "prettier": "^2.5.1", | ||||||
|     "ts-jest": "^27.1.4", |     "ts-jest": "^27.1.3", | ||||||
|     "typescript": "^3.9.9" |     "typescript": "^3.9.9" | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -6,7 +6,10 @@ import * as utils from "./utils/actionUtils"; | |||||||
|  |  | ||||||
| async function run(): Promise<void> { | async function run(): Promise<void> { | ||||||
|     try { |     try { | ||||||
|         if (!utils.isCacheFeatureAvailable()) { |         if (utils.isGhes()) { | ||||||
|  |             utils.logWarning( | ||||||
|  |                 "Cache action is not supported on GHES. See https://github.com/actions/cache/issues/505 for more details" | ||||||
|  |             ); | ||||||
|             utils.setCacheHitOutput(false); |             utils.setCacheHitOutput(false); | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -11,7 +11,10 @@ process.on("uncaughtException", e => utils.logWarning(e.message)); | |||||||
|  |  | ||||||
| async function run(): Promise<void> { | async function run(): Promise<void> { | ||||||
|     try { |     try { | ||||||
|         if (!utils.isCacheFeatureAvailable()) { |         if (utils.isGhes()) { | ||||||
|  |             utils.logWarning( | ||||||
|  |                 "Cache action is not supported on GHES. See https://github.com/actions/cache/issues/505 for more details" | ||||||
|  |             ); | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,4 +1,3 @@ | |||||||
| import * as cache from "@actions/cache"; |  | ||||||
| import * as core from "@actions/core"; | import * as core from "@actions/core"; | ||||||
|  |  | ||||||
| import { Outputs, RefKey, State } from "../constants"; | import { Outputs, RefKey, State } from "../constants"; | ||||||
| @@ -75,20 +74,3 @@ export function getInputAsInt( | |||||||
|     } |     } | ||||||
|     return value; |     return value; | ||||||
| } | } | ||||||
|  |  | ||||||
| export function isCacheFeatureAvailable(): boolean { |  | ||||||
|     if (!cache.isFeatureAvailable()) { |  | ||||||
|         if (isGhes()) { |  | ||||||
|             logWarning( |  | ||||||
|                 "Cache action is only supported on GHES version >= 3.5. If you are on version >=3.5 Please check with GHES admin if Actions cache service is enabled or not." |  | ||||||
|             ); |  | ||||||
|         } else { |  | ||||||
|             logWarning( |  | ||||||
|                 "An internal error has occurred in cache backend. Please check https://www.githubstatus.com/ for any ongoing issue in actions." |  | ||||||
|             ); |  | ||||||
|         } |  | ||||||
|         return false; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     return true; |  | ||||||
| } |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user