mirror of
https://github.com/actions/cache.git
synced 2026-07-05 12:01:04 +00:00
Compare commits
21 Commits
ced0952007
...
5fa8dd4182
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5fa8dd4182 | ||
|
|
638ed79f9d | ||
|
|
3862dccb17 | ||
|
|
0400d5f644 | ||
|
|
374a27f269 | ||
|
|
358a7306cd | ||
|
|
2ee706ef74 | ||
|
|
94f7b5d913 | ||
|
|
c36116c3f4 | ||
|
|
320fe7d56b | ||
|
|
d81cc477d9 | ||
|
|
de243982c5 | ||
|
|
e7b6a9cc9d | ||
|
|
640a1c2554 | ||
|
|
c45d39173a | ||
|
|
fa8c252a0b | ||
|
|
b0a3f6e7a6 | ||
|
|
12b3b8a0b8 | ||
|
|
9806e2f37f | ||
|
|
b3f0756597 | ||
|
|
b6cff214f7 |
31
.github/workflows/licensed.yml
vendored
31
.github/workflows/licensed.yml
vendored
@ -10,6 +10,31 @@ on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
call-licensed:
|
||||
name: Licensed
|
||||
uses: actions/reusable-workflows/.github/workflows/licensed.yml@main
|
||||
validate-cached-dependency-records:
|
||||
runs-on: ubuntu-latest
|
||||
name: Check licenses
|
||||
steps:
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci --ignore-scripts
|
||||
|
||||
- name: Set up Ruby
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: '3.1.7'
|
||||
|
||||
- name: Install licensed tool
|
||||
run: |
|
||||
cd "$RUNNER_TEMP"
|
||||
curl -Lfs -o licensed.tar.gz https://github.com/licensee/licensed/archive/refs/tags/v5.0.4.tar.gz
|
||||
tar -xzf licensed.tar.gz
|
||||
cd licensed-5.0.4
|
||||
bundle install
|
||||
|
||||
- name: Check cached dependency records
|
||||
run: |
|
||||
cd ${{ github.workspace }}
|
||||
BUNDLE_GEMFILE=$RUNNER_TEMP/licensed-5.0.4/Gemfile bundle exec $RUNNER_TEMP/licensed-5.0.4/exe/licensed status
|
||||
@ -1,6 +1,14 @@
|
||||
sources:
|
||||
npm: true
|
||||
|
||||
# Force UTF-8 encoding
|
||||
encoding: 'utf-8'
|
||||
|
||||
# Ignore problematic packages with encoding issues
|
||||
ignored:
|
||||
npm:
|
||||
- form-data
|
||||
|
||||
allowed:
|
||||
- apache-2.0
|
||||
- bsd-2-clause
|
||||
|
||||
BIN
.licenses/NOTICE
generated
BIN
.licenses/NOTICE
generated
Binary file not shown.
BIN
.licenses/npm/@actions/cache.dep.yml
generated
BIN
.licenses/npm/@actions/cache.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/@protobuf-ts/plugin-framework.dep.yml
generated
BIN
.licenses/npm/@protobuf-ts/plugin-framework.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/@protobuf-ts/plugin.dep.yml
generated
BIN
.licenses/npm/@protobuf-ts/plugin.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/@protobuf-ts/protoc.dep.yml
generated
BIN
.licenses/npm/@protobuf-ts/protoc.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/@protobuf-ts/runtime-rpc.dep.yml
generated
BIN
.licenses/npm/@protobuf-ts/runtime-rpc.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/@protobuf-ts/runtime.dep.yml
generated
BIN
.licenses/npm/@protobuf-ts/runtime.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/brace-expansion.dep.yml
generated
BIN
.licenses/npm/brace-expansion.dep.yml
generated
Binary file not shown.
Binary file not shown.
BIN
.licenses/npm/camel-case.dep.yml
generated
BIN
.licenses/npm/camel-case.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/commander.dep.yml
generated
BIN
.licenses/npm/commander.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/dot-object.dep.yml
generated
BIN
.licenses/npm/dot-object.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/dunder-proto.dep.yml
generated
Normal file
BIN
.licenses/npm/dunder-proto.dep.yml
generated
Normal file
Binary file not shown.
BIN
.licenses/npm/es-define-property.dep.yml
generated
Normal file
BIN
.licenses/npm/es-define-property.dep.yml
generated
Normal file
Binary file not shown.
BIN
.licenses/npm/es-errors.dep.yml
generated
Normal file
BIN
.licenses/npm/es-errors.dep.yml
generated
Normal file
Binary file not shown.
BIN
.licenses/npm/es-object-atoms.dep.yml
generated
Normal file
BIN
.licenses/npm/es-object-atoms.dep.yml
generated
Normal file
Binary file not shown.
BIN
.licenses/npm/es-set-tostringtag.dep.yml
generated
Normal file
BIN
.licenses/npm/es-set-tostringtag.dep.yml
generated
Normal file
Binary file not shown.
BIN
.licenses/npm/form-data-2.5.1.dep.yml
generated
BIN
.licenses/npm/form-data-2.5.1.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/form-data-3.0.1.dep.yml
generated
BIN
.licenses/npm/form-data-3.0.1.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/form-data-4.0.0.dep.yml
generated
BIN
.licenses/npm/form-data-4.0.0.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/fs.realpath.dep.yml
generated
BIN
.licenses/npm/fs.realpath.dep.yml
generated
Binary file not shown.
Binary file not shown.
BIN
.licenses/npm/get-intrinsic.dep.yml
generated
Normal file
BIN
.licenses/npm/get-intrinsic.dep.yml
generated
Normal file
Binary file not shown.
BIN
.licenses/npm/get-proto.dep.yml
generated
Normal file
BIN
.licenses/npm/get-proto.dep.yml
generated
Normal file
Binary file not shown.
BIN
.licenses/npm/glob.dep.yml
generated
BIN
.licenses/npm/glob.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/gopd.dep.yml
generated
Normal file
BIN
.licenses/npm/gopd.dep.yml
generated
Normal file
Binary file not shown.
BIN
.licenses/npm/has-symbols.dep.yml
generated
Normal file
BIN
.licenses/npm/has-symbols.dep.yml
generated
Normal file
Binary file not shown.
BIN
.licenses/npm/has-tostringtag.dep.yml
generated
Normal file
BIN
.licenses/npm/has-tostringtag.dep.yml
generated
Normal file
Binary file not shown.
Binary file not shown.
BIN
.licenses/npm/inflight.dep.yml
generated
BIN
.licenses/npm/inflight.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/inherits.dep.yml
generated
BIN
.licenses/npm/inherits.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/lodash.dep.yml
generated
BIN
.licenses/npm/lodash.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/math-intrinsics.dep.yml
generated
Normal file
BIN
.licenses/npm/math-intrinsics.dep.yml
generated
Normal file
Binary file not shown.
BIN
.licenses/npm/mime-db.dep.yml
generated
BIN
.licenses/npm/mime-db.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/mime-types.dep.yml
generated
BIN
.licenses/npm/mime-types.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/once.dep.yml
generated
BIN
.licenses/npm/once.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/path-to-regexp.dep.yml
generated
BIN
.licenses/npm/path-to-regexp.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/prettier.dep.yml
generated
BIN
.licenses/npm/prettier.dep.yml
generated
Binary file not shown.
Binary file not shown.
BIN
.licenses/npm/ts-poet.dep.yml
generated
BIN
.licenses/npm/ts-poet.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/tslib-2.8.1.dep.yml
generated
BIN
.licenses/npm/tslib-2.8.1.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/twirp-ts.dep.yml
generated
BIN
.licenses/npm/twirp-ts.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/typescript.dep.yml
generated
BIN
.licenses/npm/typescript.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/wrappy.dep.yml
generated
BIN
.licenses/npm/wrappy.dep.yml
generated
Binary file not shown.
BIN
.licenses/npm/yaml.dep.yml
generated
BIN
.licenses/npm/yaml.dep.yml
generated
Binary file not shown.
25
README.md
25
README.md
@ -19,16 +19,19 @@ See ["Caching dependencies to speed up workflows"](https://docs.github.com/en/ac
|
||||
|
||||
The cache backend service has been rewritten from the ground up for improved performance and reliability. [actions/cache](https://github.com/actions/cache) now integrates with the new cache service (v2) APIs.
|
||||
|
||||
The new service will gradually roll out as of **February 1st, 2025**. The legacy service will also be sunset on the same date. Changes in these release are **fully backward compatible**.
|
||||
The new service will gradually roll out as of **February 1st, 2025**. The legacy service will also be sunset on the same date. Changes in these releases are **fully backward compatible**.
|
||||
|
||||
**We are deprecating some versions of this action**. We recommend upgrading to version `v4` or `v3` as soon as possible before **February 1st, 2025.** (Upgrade instructions below).
|
||||
|
||||
If you are using pinned SHAs, please use the SHAs of versions `v4.2.0` or `v3.4.0`
|
||||
If you are using pinned SHAs, please use the SHAs of versions `v4.2.0` or `v3.4.0`.
|
||||
|
||||
If you do not upgrade, all workflow runs using any of the deprecated [actions/cache](https://github.com/actions/cache) will fail.
|
||||
|
||||
Upgrading to the recommended versions will not break your workflows.
|
||||
|
||||
> **Additionally, if you are managing your own GitHub runners, you must update your runner version to `2.231.0` or newer to ensure compatibility with the new cache service.**
|
||||
> Failure to update both the action version and your runner version may result in workflow failures after the migration date.
|
||||
|
||||
Read more about the change & access the migration guide: [reference to the announcement](https://github.com/actions/cache/discussions/1510).
|
||||
|
||||
### v4
|
||||
@ -335,9 +338,23 @@ There are a number of community practices/workarounds to fulfill specific requir
|
||||
|
||||
Please note that Windows environment variables (like `%LocalAppData%`) will NOT be expanded by this action. Instead, prefer using `~` in your paths which will expand to the HOME directory. For example, instead of `%LocalAppData%`, use `~\AppData\Local`. For a list of supported default environment variables, see the [Learn GitHub Actions: Variables](https://docs.github.com/en/actions/learn-github-actions/variables#default-environment-variables) page.
|
||||
|
||||
## Contributing
|
||||
## Note
|
||||
|
||||
We would love for you to contribute to `actions/cache`. Pull requests are welcome! Please see the [CONTRIBUTING.md](CONTRIBUTING.md) for more information.
|
||||
Thank you for your interest in this GitHub repo, however, right now we are not taking contributions.
|
||||
|
||||
We continue to focus our resources on strategic areas that help our customers be successful while making developers' lives easier. While GitHub Actions remains a key part of this vision, we are allocating resources towards other areas of Actions and are not taking contributions to this repository at this time. The GitHub public roadmap is the best place to follow along for any updates on features we’re working on and what stage they’re in.
|
||||
|
||||
We are taking the following steps to better direct requests related to GitHub Actions, including:
|
||||
|
||||
1. We will be directing questions and support requests to our [Community Discussions area](https://github.com/orgs/community/discussions/categories/actions)
|
||||
|
||||
2. High Priority bugs can be reported through Community Discussions or you can report these to our support team https://support.github.com/contact/bug-report.
|
||||
|
||||
3. Security Issues should be handled as per our [security.md](SECURITY.md).
|
||||
|
||||
We will still provide security updates for this project and fix major breaking changes during this time.
|
||||
|
||||
You are welcome to still raise bugs in this repo.
|
||||
|
||||
## License
|
||||
|
||||
|
||||
@ -1,5 +1,9 @@
|
||||
# Releases
|
||||
|
||||
### 4.2.4
|
||||
|
||||
- Bump `@actions/cache` to v4.0.5
|
||||
|
||||
### 4.2.3
|
||||
|
||||
- Bump `@actions/cache` to v4.0.3 (obfuscates SAS token in debug logs for cache entries)
|
||||
|
||||
@ -85,7 +85,8 @@ test("restore with no cache found", async () => {
|
||||
);
|
||||
|
||||
expect(stateMock).toHaveBeenCalledWith("CACHE_KEY", key);
|
||||
expect(stateMock).toHaveBeenCalledTimes(1);
|
||||
expect(stateMock).toHaveBeenCalledWith("CACHE_PATH", path);
|
||||
expect(stateMock).toHaveBeenCalledTimes(2);
|
||||
|
||||
expect(failedMock).toHaveBeenCalledTimes(0);
|
||||
|
||||
@ -128,7 +129,8 @@ test("restore with restore keys and no cache found", async () => {
|
||||
);
|
||||
|
||||
expect(stateMock).toHaveBeenCalledWith("CACHE_KEY", key);
|
||||
expect(stateMock).toHaveBeenCalledTimes(1);
|
||||
expect(stateMock).toHaveBeenCalledWith("CACHE_PATH", path);
|
||||
expect(stateMock).toHaveBeenCalledTimes(2);
|
||||
|
||||
expect(failedMock).toHaveBeenCalledTimes(0);
|
||||
|
||||
@ -171,7 +173,8 @@ test("restore with cache found for key", async () => {
|
||||
|
||||
expect(stateMock).toHaveBeenCalledWith("CACHE_KEY", key);
|
||||
expect(stateMock).toHaveBeenCalledWith("CACHE_RESULT", key);
|
||||
expect(stateMock).toHaveBeenCalledTimes(2);
|
||||
expect(stateMock).toHaveBeenCalledWith("CACHE_PATH", path);
|
||||
expect(stateMock).toHaveBeenCalledTimes(3);
|
||||
|
||||
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1);
|
||||
expect(setCacheHitOutputMock).toHaveBeenCalledWith("cache-hit", "true");
|
||||
@ -216,7 +219,8 @@ test("restore with cache found for restore key", async () => {
|
||||
|
||||
expect(stateMock).toHaveBeenCalledWith("CACHE_KEY", key);
|
||||
expect(stateMock).toHaveBeenCalledWith("CACHE_RESULT", restoreKey);
|
||||
expect(stateMock).toHaveBeenCalledTimes(2);
|
||||
expect(stateMock).toHaveBeenCalledWith("CACHE_PATH", path);
|
||||
expect(stateMock).toHaveBeenCalledTimes(3);
|
||||
|
||||
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1);
|
||||
expect(setCacheHitOutputMock).toHaveBeenCalledWith("cache-hit", "false");
|
||||
@ -304,7 +308,8 @@ test("restore when fail on cache miss is enabled and primary key doesn't match r
|
||||
|
||||
expect(stateMock).toHaveBeenCalledWith("CACHE_KEY", key);
|
||||
expect(stateMock).toHaveBeenCalledWith("CACHE_RESULT", restoreKey);
|
||||
expect(stateMock).toHaveBeenCalledTimes(2);
|
||||
expect(stateMock).toHaveBeenCalledWith("CACHE_PATH", path);
|
||||
expect(stateMock).toHaveBeenCalledTimes(3);
|
||||
|
||||
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1);
|
||||
expect(setCacheHitOutputMock).toHaveBeenCalledWith("cache-hit", "false");
|
||||
@ -349,7 +354,8 @@ test("restore with fail on cache miss disabled and no cache found", async () =>
|
||||
);
|
||||
|
||||
expect(stateMock).toHaveBeenCalledWith("CACHE_KEY", key);
|
||||
expect(stateMock).toHaveBeenCalledTimes(1);
|
||||
expect(stateMock).toHaveBeenCalledWith("CACHE_PATH", path);
|
||||
expect(stateMock).toHaveBeenCalledTimes(2);
|
||||
|
||||
expect(infoMock).toHaveBeenCalledWith(
|
||||
`Cache not found for input keys: ${key}, ${restoreKey}`
|
||||
|
||||
@ -439,7 +439,8 @@ test("restore with lookup-only set", async () => {
|
||||
|
||||
expect(stateMock).toHaveBeenCalledWith("CACHE_KEY", key);
|
||||
expect(stateMock).toHaveBeenCalledWith("CACHE_RESULT", key);
|
||||
expect(stateMock).toHaveBeenCalledTimes(2);
|
||||
expect(stateMock).toHaveBeenCalledWith("CACHE_PATH", path);
|
||||
expect(stateMock).toHaveBeenCalledTimes(3);
|
||||
|
||||
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1);
|
||||
expect(setCacheHitOutputMock).toHaveBeenCalledWith("cache-hit", "true");
|
||||
|
||||
@ -86,7 +86,8 @@ test("restore with no cache found", async () => {
|
||||
);
|
||||
|
||||
expect(outputMock).toHaveBeenCalledWith("cache-primary-key", key);
|
||||
expect(outputMock).toHaveBeenCalledTimes(1);
|
||||
expect(outputMock).toHaveBeenCalledWith("cache-path", path);
|
||||
expect(outputMock).toHaveBeenCalledTimes(2);
|
||||
expect(failedMock).toHaveBeenCalledTimes(0);
|
||||
|
||||
expect(infoMock).toHaveBeenCalledWith(
|
||||
@ -128,6 +129,7 @@ test("restore with restore keys and no cache found", async () => {
|
||||
);
|
||||
|
||||
expect(outputMock).toHaveBeenCalledWith("cache-primary-key", key);
|
||||
expect(outputMock).toHaveBeenCalledWith("cache-path", path);
|
||||
expect(failedMock).toHaveBeenCalledTimes(0);
|
||||
|
||||
expect(infoMock).toHaveBeenCalledWith(
|
||||
@ -169,8 +171,9 @@ test("restore with cache found for key", async () => {
|
||||
expect(outputMock).toHaveBeenCalledWith("cache-primary-key", key);
|
||||
expect(outputMock).toHaveBeenCalledWith("cache-hit", "true");
|
||||
expect(outputMock).toHaveBeenCalledWith("cache-matched-key", key);
|
||||
expect(outputMock).toHaveBeenCalledWith("cache-path", path);
|
||||
|
||||
expect(outputMock).toHaveBeenCalledTimes(3);
|
||||
expect(outputMock).toHaveBeenCalledTimes(4);
|
||||
|
||||
expect(infoMock).toHaveBeenCalledWith(`Cache restored from key: ${key}`);
|
||||
expect(failedMock).toHaveBeenCalledTimes(0);
|
||||
@ -212,8 +215,9 @@ test("restore with cache found for restore key", async () => {
|
||||
expect(outputMock).toHaveBeenCalledWith("cache-primary-key", key);
|
||||
expect(outputMock).toHaveBeenCalledWith("cache-hit", "false");
|
||||
expect(outputMock).toHaveBeenCalledWith("cache-matched-key", restoreKey);
|
||||
expect(outputMock).toHaveBeenCalledWith("cache-path", path);
|
||||
|
||||
expect(outputMock).toHaveBeenCalledTimes(3);
|
||||
expect(outputMock).toHaveBeenCalledTimes(4);
|
||||
|
||||
expect(infoMock).toHaveBeenCalledWith(
|
||||
`Cache restored from key: ${restoreKey}`
|
||||
|
||||
1468
dist/restore-only/index.js
vendored
1468
dist/restore-only/index.js
vendored
File diff suppressed because one or more lines are too long
1468
dist/restore/index.js
vendored
1468
dist/restore/index.js
vendored
File diff suppressed because one or more lines are too long
1468
dist/save-only/index.js
vendored
1468
dist/save-only/index.js
vendored
File diff suppressed because one or more lines are too long
1468
dist/save/index.js
vendored
1468
dist/save/index.js
vendored
File diff suppressed because one or more lines are too long
1029
package-lock.json
generated
1029
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "cache",
|
||||
"version": "4.2.3",
|
||||
"version": "4.2.4",
|
||||
"private": true,
|
||||
"description": "Cache dependencies and build outputs",
|
||||
"main": "dist/restore/index.js",
|
||||
@ -23,7 +23,7 @@
|
||||
"author": "GitHub",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@actions/cache": "^4.0.3",
|
||||
"@actions/cache": "^4.0.5",
|
||||
"@actions/core": "^1.11.1",
|
||||
"@actions/exec": "^1.1.1",
|
||||
"@actions/io": "^1.1.3"
|
||||
@ -48,4 +48,4 @@
|
||||
"ts-jest": "^28.0.8",
|
||||
"typescript": "^4.9.3"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -17,6 +17,7 @@ The restore action restores a cache. It works similarly to the `cache` action ex
|
||||
* `cache-hit` - A boolean value to indicate an exact match was found for the key.
|
||||
* `cache-primary-key` - Cache primary key passed in the input to use in subsequent steps of the workflow.
|
||||
* `cache-matched-key` - Key of the cache that was restored, it could either be the primary key on cache-hit or a partial/complete match of one of the restore keys.
|
||||
* `cache-path` - The list of files, directories, and wildcard patterns passed in the input.
|
||||
|
||||
> **Note**
|
||||
`cache-hit` will be set to `true` only when cache hit occurs for the exact `key` match. For a partial key match via `restore-keys` or a cache miss, it will be set to `false`.
|
||||
|
||||
@ -30,6 +30,8 @@ outputs:
|
||||
description: 'A resolved cache key for which cache match was attempted'
|
||||
cache-matched-key:
|
||||
description: 'Key of the cache that was restored, it could either be the primary key on cache-hit or a partial/complete match of one of the restore keys'
|
||||
cache-path:
|
||||
description: 'The list of files, directories, and wildcard patterns passed in the input'
|
||||
runs:
|
||||
using: 'node20'
|
||||
main: '../dist/restore-only/index.js'
|
||||
|
||||
@ -11,12 +11,14 @@ export enum Inputs {
|
||||
export enum Outputs {
|
||||
CacheHit = "cache-hit", // Output from cache, restore action
|
||||
CachePrimaryKey = "cache-primary-key", // Output from restore action
|
||||
CacheMatchedKey = "cache-matched-key" // Output from restore action
|
||||
CacheMatchedKey = "cache-matched-key", // Output from restore action
|
||||
CachePath = "cache-path" // Output from restore action
|
||||
}
|
||||
|
||||
export enum State {
|
||||
CachePrimaryKey = "CACHE_KEY",
|
||||
CacheMatchedKey = "CACHE_RESULT"
|
||||
CacheMatchedKey = "CACHE_RESULT",
|
||||
CachePath = "CACHE_PATH"
|
||||
}
|
||||
|
||||
export enum Events {
|
||||
|
||||
@ -32,6 +32,8 @@ export async function restoreImpl(
|
||||
const primaryKey = core.getInput(Inputs.Key, { required: true });
|
||||
stateProvider.setState(State.CachePrimaryKey, primaryKey);
|
||||
|
||||
stateProvider.setState(State.CachePath, core.getInput(Inputs.Path)); // Output path unchanged from input
|
||||
|
||||
const restoreKeys = utils.getInputAsArray(Inputs.RestoreKeys);
|
||||
const cachePaths = utils.getInputAsArray(Inputs.Path, {
|
||||
required: true
|
||||
|
||||
@ -35,7 +35,8 @@ export class StateProvider extends StateProviderBase {
|
||||
export class NullStateProvider extends StateProviderBase {
|
||||
stateToOutputMap = new Map<string, string>([
|
||||
[State.CacheMatchedKey, Outputs.CacheMatchedKey],
|
||||
[State.CachePrimaryKey, Outputs.CachePrimaryKey]
|
||||
[State.CachePrimaryKey, Outputs.CachePrimaryKey],
|
||||
[State.CachePath, Outputs.CachePath]
|
||||
]);
|
||||
|
||||
setState = (key: string, value: string) => {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user