Merge d9536f63af679b1d0f62406d7503f213608210e5 into 4a28cbc0544512425977dda4ce81a9b6f0f34ad9
This commit is contained in:
commit
1eae7985a4
50
.github/workflows/workflow.yml
vendored
50
.github/workflows/workflow.yml
vendored
@ -46,10 +46,10 @@ jobs:
|
|||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
- name: Generate files in working directory
|
- name: Generate files in working directory
|
||||||
shell: bash
|
shell: bash
|
||||||
run: __tests__/create-cache-files.sh ${{ runner.os }} test-cache
|
run: __tests__/create-cache-files.sh ${{ runner.os }}-save test-cache
|
||||||
- name: Generate files outside working directory
|
- name: Generate files outside working directory
|
||||||
shell: bash
|
shell: bash
|
||||||
run: __tests__/create-cache-files.sh ${{ runner.os }} ~/test-cache
|
run: __tests__/create-cache-files.sh ${{ runner.os }}-save ~/test-cache
|
||||||
- name: Save cache
|
- name: Save cache
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
@ -76,10 +76,52 @@ jobs:
|
|||||||
~/test-cache
|
~/test-cache
|
||||||
- name: Verify cache files in working directory
|
- name: Verify cache files in working directory
|
||||||
shell: bash
|
shell: bash
|
||||||
run: __tests__/verify-cache-files.sh ${{ runner.os }} test-cache
|
run: __tests__/verify-cache-files.sh ${{ runner.os }}-save test-cache
|
||||||
- name: Verify cache files outside working directory
|
- name: Verify cache files outside working directory
|
||||||
shell: bash
|
shell: bash
|
||||||
run: __tests__/verify-cache-files.sh ${{ runner.os }} ~/test-cache
|
run: __tests__/verify-cache-files.sh ${{ runner.os }}-save ~/test-cache
|
||||||
|
|
||||||
|
# End to end with save-always
|
||||||
|
test-save-always-with-failure:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-latest, windows-latest, macOS-latest]
|
||||||
|
fail-fast: false
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
continue-on-error: true
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Save cache
|
||||||
|
id: save-always
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
key: test-${{ runner.os }}-${{ github.run_id }}.${{ github.run_attempt }}
|
||||||
|
path: test-cache
|
||||||
|
save-always: true
|
||||||
|
- name: Generate files
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
__tests__/create-cache-files.sh ${{ runner.os }}-save-always test-cache
|
||||||
|
exit 1
|
||||||
|
test-save-always-restore:
|
||||||
|
needs: test-save-always-with-failure
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-latest, windows-latest, macOS-latest]
|
||||||
|
fail-fast: false
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Restore cache
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
key: test-${{ runner.os }}-${{ github.run_id }}.${{ github.run_attempt }}
|
||||||
|
path: test-cache
|
||||||
|
- name: Verify cache
|
||||||
|
shell: bash
|
||||||
|
run: __tests__/verify-cache-files.sh ${{ runner.os }}-save-always test-cache
|
||||||
|
|
||||||
# End to end with proxy
|
# End to end with proxy
|
||||||
test-proxy-save:
|
test-proxy-save:
|
||||||
|
|||||||
@ -58,6 +58,7 @@ If you are using a `self-hosted` Windows runner, `GNU tar` and `zstd` are requir
|
|||||||
* `enableCrossOsArchive` - An optional boolean when enabled, allows Windows runners to save or restore caches that can be restored or saved respectively on other platforms. Default: `false`
|
* `enableCrossOsArchive` - An optional boolean when enabled, allows Windows runners to save or restore caches that can be restored or saved respectively on other platforms. Default: `false`
|
||||||
* `fail-on-cache-miss` - Fail the workflow if cache entry is not found. Default: `false`
|
* `fail-on-cache-miss` - Fail the workflow if cache entry is not found. Default: `false`
|
||||||
* `lookup-only` - If true, only checks if cache entry exists and skips download. Does not change save cache behavior. Default: `false`
|
* `lookup-only` - If true, only checks if cache entry exists and skips download. Does not change save cache behavior. Default: `false`
|
||||||
|
* `save-always` - If true, always saves the cache, even if the job fails. Requires a [step `id`](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsid). Default: `false`
|
||||||
|
|
||||||
#### Environment Variables
|
#### Environment Variables
|
||||||
|
|
||||||
|
|||||||
@ -173,8 +173,12 @@ test("restore with cache found for key", async () => {
|
|||||||
expect(stateMock).toHaveBeenCalledWith("CACHE_RESULT", key);
|
expect(stateMock).toHaveBeenCalledWith("CACHE_RESULT", key);
|
||||||
expect(stateMock).toHaveBeenCalledTimes(2);
|
expect(stateMock).toHaveBeenCalledTimes(2);
|
||||||
|
|
||||||
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1);
|
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(2);
|
||||||
expect(setCacheHitOutputMock).toHaveBeenCalledWith("cache-hit", "true");
|
expect(setCacheHitOutputMock).toHaveBeenCalledWith("cache-hit", "true");
|
||||||
|
expect(setCacheHitOutputMock).toHaveBeenCalledWith(
|
||||||
|
"save-always-d18d746b9",
|
||||||
|
"false"
|
||||||
|
);
|
||||||
|
|
||||||
expect(infoMock).toHaveBeenCalledWith(`Cache restored from key: ${key}`);
|
expect(infoMock).toHaveBeenCalledWith(`Cache restored from key: ${key}`);
|
||||||
expect(failedMock).toHaveBeenCalledTimes(0);
|
expect(failedMock).toHaveBeenCalledTimes(0);
|
||||||
@ -218,8 +222,12 @@ test("restore with cache found for restore key", async () => {
|
|||||||
expect(stateMock).toHaveBeenCalledWith("CACHE_RESULT", restoreKey);
|
expect(stateMock).toHaveBeenCalledWith("CACHE_RESULT", restoreKey);
|
||||||
expect(stateMock).toHaveBeenCalledTimes(2);
|
expect(stateMock).toHaveBeenCalledTimes(2);
|
||||||
|
|
||||||
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1);
|
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(2);
|
||||||
expect(setCacheHitOutputMock).toHaveBeenCalledWith("cache-hit", "false");
|
expect(setCacheHitOutputMock).toHaveBeenCalledWith("cache-hit", "false");
|
||||||
|
expect(setCacheHitOutputMock).toHaveBeenCalledWith(
|
||||||
|
"save-always-d18d746b9",
|
||||||
|
"false"
|
||||||
|
);
|
||||||
expect(infoMock).toHaveBeenCalledWith(
|
expect(infoMock).toHaveBeenCalledWith(
|
||||||
`Cache restored from key: ${restoreKey}`
|
`Cache restored from key: ${restoreKey}`
|
||||||
);
|
);
|
||||||
@ -260,7 +268,11 @@ test("Fail restore when fail on cache miss is enabled and primary + restore keys
|
|||||||
);
|
);
|
||||||
|
|
||||||
expect(stateMock).toHaveBeenCalledWith("CACHE_KEY", key);
|
expect(stateMock).toHaveBeenCalledWith("CACHE_KEY", key);
|
||||||
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(0);
|
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1);
|
||||||
|
expect(setCacheHitOutputMock).toHaveBeenCalledWith(
|
||||||
|
"save-always-d18d746b9",
|
||||||
|
"false"
|
||||||
|
);
|
||||||
|
|
||||||
expect(failedMock).toHaveBeenCalledWith(
|
expect(failedMock).toHaveBeenCalledWith(
|
||||||
`Failed to restore cache entry. Exiting as fail-on-cache-miss is set. Input key: ${key}`
|
`Failed to restore cache entry. Exiting as fail-on-cache-miss is set. Input key: ${key}`
|
||||||
@ -306,8 +318,12 @@ test("restore when fail on cache miss is enabled and primary key doesn't match r
|
|||||||
expect(stateMock).toHaveBeenCalledWith("CACHE_RESULT", restoreKey);
|
expect(stateMock).toHaveBeenCalledWith("CACHE_RESULT", restoreKey);
|
||||||
expect(stateMock).toHaveBeenCalledTimes(2);
|
expect(stateMock).toHaveBeenCalledTimes(2);
|
||||||
|
|
||||||
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1);
|
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(2);
|
||||||
expect(setCacheHitOutputMock).toHaveBeenCalledWith("cache-hit", "false");
|
expect(setCacheHitOutputMock).toHaveBeenCalledWith("cache-hit", "false");
|
||||||
|
expect(setCacheHitOutputMock).toHaveBeenCalledWith(
|
||||||
|
"save-always-d18d746b9",
|
||||||
|
"false"
|
||||||
|
);
|
||||||
|
|
||||||
expect(infoMock).toHaveBeenCalledWith(
|
expect(infoMock).toHaveBeenCalledWith(
|
||||||
`Cache restored from key: ${restoreKey}`
|
`Cache restored from key: ${restoreKey}`
|
||||||
|
|||||||
@ -79,8 +79,12 @@ test("restore without AC available should no-op", async () => {
|
|||||||
await restoreImpl(new StateProvider());
|
await restoreImpl(new StateProvider());
|
||||||
|
|
||||||
expect(restoreCacheMock).toHaveBeenCalledTimes(0);
|
expect(restoreCacheMock).toHaveBeenCalledTimes(0);
|
||||||
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1);
|
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(2);
|
||||||
expect(setCacheHitOutputMock).toHaveBeenCalledWith("cache-hit", "false");
|
expect(setCacheHitOutputMock).toHaveBeenCalledWith("cache-hit", "false");
|
||||||
|
expect(setCacheHitOutputMock).toHaveBeenCalledWith(
|
||||||
|
"save-always-d18d746b9",
|
||||||
|
"false"
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
test("restore on GHES without AC available should no-op", async () => {
|
test("restore on GHES without AC available should no-op", async () => {
|
||||||
@ -95,8 +99,12 @@ test("restore on GHES without AC available should no-op", async () => {
|
|||||||
await restoreImpl(new StateProvider());
|
await restoreImpl(new StateProvider());
|
||||||
|
|
||||||
expect(restoreCacheMock).toHaveBeenCalledTimes(0);
|
expect(restoreCacheMock).toHaveBeenCalledTimes(0);
|
||||||
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1);
|
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(2);
|
||||||
expect(setCacheHitOutputMock).toHaveBeenCalledWith("cache-hit", "false");
|
expect(setCacheHitOutputMock).toHaveBeenCalledWith("cache-hit", "false");
|
||||||
|
expect(setCacheHitOutputMock).toHaveBeenCalledWith(
|
||||||
|
"save-always-d18d746b9",
|
||||||
|
"false"
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
test("restore on GHES with AC available ", async () => {
|
test("restore on GHES with AC available ", async () => {
|
||||||
@ -133,8 +141,12 @@ test("restore on GHES with AC available ", async () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
expect(stateMock).toHaveBeenCalledWith("CACHE_KEY", key);
|
expect(stateMock).toHaveBeenCalledWith("CACHE_KEY", key);
|
||||||
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1);
|
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(2);
|
||||||
expect(setCacheHitOutputMock).toHaveBeenCalledWith("cache-hit", "true");
|
expect(setCacheHitOutputMock).toHaveBeenCalledWith("cache-hit", "true");
|
||||||
|
expect(setCacheHitOutputMock).toHaveBeenCalledWith(
|
||||||
|
"save-always-d18d746b9",
|
||||||
|
"false"
|
||||||
|
);
|
||||||
|
|
||||||
expect(infoMock).toHaveBeenCalledWith(`Cache restored from key: ${key}`);
|
expect(infoMock).toHaveBeenCalledWith(`Cache restored from key: ${key}`);
|
||||||
expect(failedMock).toHaveBeenCalledTimes(0);
|
expect(failedMock).toHaveBeenCalledTimes(0);
|
||||||
@ -355,8 +367,12 @@ test("restore with cache found for key", async () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
expect(stateMock).toHaveBeenCalledWith("CACHE_KEY", key);
|
expect(stateMock).toHaveBeenCalledWith("CACHE_KEY", key);
|
||||||
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1);
|
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(2);
|
||||||
expect(setCacheHitOutputMock).toHaveBeenCalledWith("cache-hit", "true");
|
expect(setCacheHitOutputMock).toHaveBeenCalledWith("cache-hit", "true");
|
||||||
|
expect(setCacheHitOutputMock).toHaveBeenCalledWith(
|
||||||
|
"save-always-d18d746b9",
|
||||||
|
"false"
|
||||||
|
);
|
||||||
|
|
||||||
expect(infoMock).toHaveBeenCalledWith(`Cache restored from key: ${key}`);
|
expect(infoMock).toHaveBeenCalledWith(`Cache restored from key: ${key}`);
|
||||||
expect(failedMock).toHaveBeenCalledTimes(0);
|
expect(failedMock).toHaveBeenCalledTimes(0);
|
||||||
@ -397,8 +413,12 @@ test("restore with cache found for restore key", async () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
expect(stateMock).toHaveBeenCalledWith("CACHE_KEY", key);
|
expect(stateMock).toHaveBeenCalledWith("CACHE_KEY", key);
|
||||||
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1);
|
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(2);
|
||||||
expect(setCacheHitOutputMock).toHaveBeenCalledWith("cache-hit", "false");
|
expect(setCacheHitOutputMock).toHaveBeenCalledWith("cache-hit", "false");
|
||||||
|
expect(setCacheHitOutputMock).toHaveBeenCalledWith(
|
||||||
|
"save-always-d18d746b9",
|
||||||
|
"false"
|
||||||
|
);
|
||||||
expect(infoMock).toHaveBeenCalledWith(
|
expect(infoMock).toHaveBeenCalledWith(
|
||||||
`Cache restored from key: ${restoreKey}`
|
`Cache restored from key: ${restoreKey}`
|
||||||
);
|
);
|
||||||
@ -441,8 +461,12 @@ test("restore with lookup-only set", async () => {
|
|||||||
expect(stateMock).toHaveBeenCalledWith("CACHE_RESULT", key);
|
expect(stateMock).toHaveBeenCalledWith("CACHE_RESULT", key);
|
||||||
expect(stateMock).toHaveBeenCalledTimes(2);
|
expect(stateMock).toHaveBeenCalledTimes(2);
|
||||||
|
|
||||||
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1);
|
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(2);
|
||||||
expect(setCacheHitOutputMock).toHaveBeenCalledWith("cache-hit", "true");
|
expect(setCacheHitOutputMock).toHaveBeenCalledWith("cache-hit", "true");
|
||||||
|
expect(setCacheHitOutputMock).toHaveBeenCalledWith(
|
||||||
|
"save-always-d18d746b9",
|
||||||
|
"false"
|
||||||
|
);
|
||||||
|
|
||||||
expect(infoMock).toHaveBeenCalledWith(
|
expect(infoMock).toHaveBeenCalledWith(
|
||||||
`Cache found and can be restored from key: ${key}`
|
`Cache found and can be restored from key: ${key}`
|
||||||
@ -465,3 +489,40 @@ test("restore failure with earlyExit should call process exit", async () => {
|
|||||||
);
|
);
|
||||||
expect(processExitMock).toHaveBeenCalledWith(1);
|
expect(processExitMock).toHaveBeenCalledWith(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("restore with save-always set", async () => {
|
||||||
|
jest.spyOn(actionUtils, "isGhes").mockImplementation(() => true);
|
||||||
|
const path = "node_modules";
|
||||||
|
const key = "node-test";
|
||||||
|
testUtils.setInputs({
|
||||||
|
path: path,
|
||||||
|
key,
|
||||||
|
saveAlways: true
|
||||||
|
});
|
||||||
|
|
||||||
|
const setSaveAlwaysOutputMock = jest.spyOn(core, "setOutput");
|
||||||
|
const restoreCacheMock = jest
|
||||||
|
.spyOn(cache, "restoreCache")
|
||||||
|
.mockImplementationOnce(() => {
|
||||||
|
return Promise.resolve(undefined);
|
||||||
|
});
|
||||||
|
|
||||||
|
await restoreImpl(new StateProvider());
|
||||||
|
|
||||||
|
expect(restoreCacheMock).toHaveBeenCalledTimes(1);
|
||||||
|
expect(restoreCacheMock).toHaveBeenCalledWith(
|
||||||
|
[path],
|
||||||
|
key,
|
||||||
|
[],
|
||||||
|
{
|
||||||
|
lookupOnly: false
|
||||||
|
},
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(setSaveAlwaysOutputMock).toHaveBeenCalledTimes(1);
|
||||||
|
expect(setSaveAlwaysOutputMock).toHaveBeenCalledWith(
|
||||||
|
"save-always-d18d746b9",
|
||||||
|
"true"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|||||||
@ -86,7 +86,8 @@ test("restore with no cache found", async () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
expect(outputMock).toHaveBeenCalledWith("cache-primary-key", key);
|
expect(outputMock).toHaveBeenCalledWith("cache-primary-key", key);
|
||||||
expect(outputMock).toHaveBeenCalledTimes(1);
|
expect(outputMock).toHaveBeenCalledWith("save-always-d18d746b9", "false");
|
||||||
|
expect(outputMock).toHaveBeenCalledTimes(2);
|
||||||
expect(failedMock).toHaveBeenCalledTimes(0);
|
expect(failedMock).toHaveBeenCalledTimes(0);
|
||||||
|
|
||||||
expect(infoMock).toHaveBeenCalledWith(
|
expect(infoMock).toHaveBeenCalledWith(
|
||||||
@ -169,8 +170,9 @@ test("restore with cache found for key", async () => {
|
|||||||
expect(outputMock).toHaveBeenCalledWith("cache-primary-key", key);
|
expect(outputMock).toHaveBeenCalledWith("cache-primary-key", key);
|
||||||
expect(outputMock).toHaveBeenCalledWith("cache-hit", "true");
|
expect(outputMock).toHaveBeenCalledWith("cache-hit", "true");
|
||||||
expect(outputMock).toHaveBeenCalledWith("cache-matched-key", key);
|
expect(outputMock).toHaveBeenCalledWith("cache-matched-key", key);
|
||||||
|
expect(outputMock).toHaveBeenCalledWith("save-always-d18d746b9", "false");
|
||||||
|
|
||||||
expect(outputMock).toHaveBeenCalledTimes(3);
|
expect(outputMock).toHaveBeenCalledTimes(4);
|
||||||
|
|
||||||
expect(infoMock).toHaveBeenCalledWith(`Cache restored from key: ${key}`);
|
expect(infoMock).toHaveBeenCalledWith(`Cache restored from key: ${key}`);
|
||||||
expect(failedMock).toHaveBeenCalledTimes(0);
|
expect(failedMock).toHaveBeenCalledTimes(0);
|
||||||
@ -212,8 +214,9 @@ test("restore with cache found for restore key", async () => {
|
|||||||
expect(outputMock).toHaveBeenCalledWith("cache-primary-key", key);
|
expect(outputMock).toHaveBeenCalledWith("cache-primary-key", key);
|
||||||
expect(outputMock).toHaveBeenCalledWith("cache-hit", "false");
|
expect(outputMock).toHaveBeenCalledWith("cache-hit", "false");
|
||||||
expect(outputMock).toHaveBeenCalledWith("cache-matched-key", restoreKey);
|
expect(outputMock).toHaveBeenCalledWith("cache-matched-key", restoreKey);
|
||||||
|
expect(outputMock).toHaveBeenCalledWith("save-always-d18d746b9", "false");
|
||||||
|
|
||||||
expect(outputMock).toHaveBeenCalledTimes(3);
|
expect(outputMock).toHaveBeenCalledTimes(4);
|
||||||
|
|
||||||
expect(infoMock).toHaveBeenCalledWith(
|
expect(infoMock).toHaveBeenCalledWith(
|
||||||
`Cache restored from key: ${restoreKey}`
|
`Cache restored from key: ${restoreKey}`
|
||||||
|
|||||||
@ -33,11 +33,13 @@ inputs:
|
|||||||
outputs:
|
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'
|
||||||
|
save-always-d18d746b9:
|
||||||
|
description: "Run the post step to save the cache even if another step before fails"
|
||||||
runs:
|
runs:
|
||||||
using: 'node20'
|
using: 'node20'
|
||||||
main: 'dist/restore/index.js'
|
main: 'dist/restore/index.js'
|
||||||
post: 'dist/save/index.js'
|
post: 'dist/save/index.js'
|
||||||
post-if: "success() || github.event.inputs.save-always"
|
post-if: "success() || (contains(steps.*.outputs.save-always-d18d746b9, 'true') && !contains(steps.*.outputs.save-always-d18d746b9, 'false'))"
|
||||||
branding:
|
branding:
|
||||||
icon: 'archive'
|
icon: 'archive'
|
||||||
color: 'gray-dark'
|
color: 'gray-dark'
|
||||||
|
|||||||
7
dist/restore-only/index.js
vendored
7
dist/restore-only/index.js
vendored
@ -59324,13 +59324,15 @@ var Inputs;
|
|||||||
Inputs["UploadChunkSize"] = "upload-chunk-size";
|
Inputs["UploadChunkSize"] = "upload-chunk-size";
|
||||||
Inputs["EnableCrossOsArchive"] = "enableCrossOsArchive";
|
Inputs["EnableCrossOsArchive"] = "enableCrossOsArchive";
|
||||||
Inputs["FailOnCacheMiss"] = "fail-on-cache-miss";
|
Inputs["FailOnCacheMiss"] = "fail-on-cache-miss";
|
||||||
Inputs["LookupOnly"] = "lookup-only"; // Input for cache, restore action
|
Inputs["LookupOnly"] = "lookup-only";
|
||||||
|
Inputs["SaveAlways"] = "save-always"; // Input for cache action
|
||||||
})(Inputs = exports.Inputs || (exports.Inputs = {}));
|
})(Inputs = exports.Inputs || (exports.Inputs = {}));
|
||||||
var Outputs;
|
var Outputs;
|
||||||
(function (Outputs) {
|
(function (Outputs) {
|
||||||
Outputs["CacheHit"] = "cache-hit";
|
Outputs["CacheHit"] = "cache-hit";
|
||||||
Outputs["CachePrimaryKey"] = "cache-primary-key";
|
Outputs["CachePrimaryKey"] = "cache-primary-key";
|
||||||
Outputs["CacheMatchedKey"] = "cache-matched-key"; // Output from restore action
|
Outputs["CacheMatchedKey"] = "cache-matched-key";
|
||||||
|
Outputs["SaveAlways"] = "save-always-d18d746b9"; // Output from cache action, with unique suffix for detection in post-if
|
||||||
})(Outputs = exports.Outputs || (exports.Outputs = {}));
|
})(Outputs = exports.Outputs || (exports.Outputs = {}));
|
||||||
var State;
|
var State;
|
||||||
(function (State) {
|
(function (State) {
|
||||||
@ -59394,6 +59396,7 @@ const stateProvider_1 = __nccwpck_require__(1527);
|
|||||||
const utils = __importStar(__nccwpck_require__(6850));
|
const utils = __importStar(__nccwpck_require__(6850));
|
||||||
function restoreImpl(stateProvider, earlyExit) {
|
function restoreImpl(stateProvider, earlyExit) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
core.setOutput(constants_1.Outputs.SaveAlways, core.getInput(constants_1.Inputs.SaveAlways) || "false");
|
||||||
try {
|
try {
|
||||||
if (!utils.isCacheFeatureAvailable()) {
|
if (!utils.isCacheFeatureAvailable()) {
|
||||||
core.setOutput(constants_1.Outputs.CacheHit, "false");
|
core.setOutput(constants_1.Outputs.CacheHit, "false");
|
||||||
|
|||||||
7
dist/restore/index.js
vendored
7
dist/restore/index.js
vendored
@ -59324,13 +59324,15 @@ var Inputs;
|
|||||||
Inputs["UploadChunkSize"] = "upload-chunk-size";
|
Inputs["UploadChunkSize"] = "upload-chunk-size";
|
||||||
Inputs["EnableCrossOsArchive"] = "enableCrossOsArchive";
|
Inputs["EnableCrossOsArchive"] = "enableCrossOsArchive";
|
||||||
Inputs["FailOnCacheMiss"] = "fail-on-cache-miss";
|
Inputs["FailOnCacheMiss"] = "fail-on-cache-miss";
|
||||||
Inputs["LookupOnly"] = "lookup-only"; // Input for cache, restore action
|
Inputs["LookupOnly"] = "lookup-only";
|
||||||
|
Inputs["SaveAlways"] = "save-always"; // Input for cache action
|
||||||
})(Inputs = exports.Inputs || (exports.Inputs = {}));
|
})(Inputs = exports.Inputs || (exports.Inputs = {}));
|
||||||
var Outputs;
|
var Outputs;
|
||||||
(function (Outputs) {
|
(function (Outputs) {
|
||||||
Outputs["CacheHit"] = "cache-hit";
|
Outputs["CacheHit"] = "cache-hit";
|
||||||
Outputs["CachePrimaryKey"] = "cache-primary-key";
|
Outputs["CachePrimaryKey"] = "cache-primary-key";
|
||||||
Outputs["CacheMatchedKey"] = "cache-matched-key"; // Output from restore action
|
Outputs["CacheMatchedKey"] = "cache-matched-key";
|
||||||
|
Outputs["SaveAlways"] = "save-always-d18d746b9"; // Output from cache action, with unique suffix for detection in post-if
|
||||||
})(Outputs = exports.Outputs || (exports.Outputs = {}));
|
})(Outputs = exports.Outputs || (exports.Outputs = {}));
|
||||||
var State;
|
var State;
|
||||||
(function (State) {
|
(function (State) {
|
||||||
@ -59394,6 +59396,7 @@ const stateProvider_1 = __nccwpck_require__(1527);
|
|||||||
const utils = __importStar(__nccwpck_require__(6850));
|
const utils = __importStar(__nccwpck_require__(6850));
|
||||||
function restoreImpl(stateProvider, earlyExit) {
|
function restoreImpl(stateProvider, earlyExit) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
|
core.setOutput(constants_1.Outputs.SaveAlways, core.getInput(constants_1.Inputs.SaveAlways) || "false");
|
||||||
try {
|
try {
|
||||||
if (!utils.isCacheFeatureAvailable()) {
|
if (!utils.isCacheFeatureAvailable()) {
|
||||||
core.setOutput(constants_1.Outputs.CacheHit, "false");
|
core.setOutput(constants_1.Outputs.CacheHit, "false");
|
||||||
|
|||||||
6
dist/save-only/index.js
vendored
6
dist/save-only/index.js
vendored
@ -59324,13 +59324,15 @@ var Inputs;
|
|||||||
Inputs["UploadChunkSize"] = "upload-chunk-size";
|
Inputs["UploadChunkSize"] = "upload-chunk-size";
|
||||||
Inputs["EnableCrossOsArchive"] = "enableCrossOsArchive";
|
Inputs["EnableCrossOsArchive"] = "enableCrossOsArchive";
|
||||||
Inputs["FailOnCacheMiss"] = "fail-on-cache-miss";
|
Inputs["FailOnCacheMiss"] = "fail-on-cache-miss";
|
||||||
Inputs["LookupOnly"] = "lookup-only"; // Input for cache, restore action
|
Inputs["LookupOnly"] = "lookup-only";
|
||||||
|
Inputs["SaveAlways"] = "save-always"; // Input for cache action
|
||||||
})(Inputs = exports.Inputs || (exports.Inputs = {}));
|
})(Inputs = exports.Inputs || (exports.Inputs = {}));
|
||||||
var Outputs;
|
var Outputs;
|
||||||
(function (Outputs) {
|
(function (Outputs) {
|
||||||
Outputs["CacheHit"] = "cache-hit";
|
Outputs["CacheHit"] = "cache-hit";
|
||||||
Outputs["CachePrimaryKey"] = "cache-primary-key";
|
Outputs["CachePrimaryKey"] = "cache-primary-key";
|
||||||
Outputs["CacheMatchedKey"] = "cache-matched-key"; // Output from restore action
|
Outputs["CacheMatchedKey"] = "cache-matched-key";
|
||||||
|
Outputs["SaveAlways"] = "save-always-d18d746b9"; // Output from cache action, with unique suffix for detection in post-if
|
||||||
})(Outputs = exports.Outputs || (exports.Outputs = {}));
|
})(Outputs = exports.Outputs || (exports.Outputs = {}));
|
||||||
var State;
|
var State;
|
||||||
(function (State) {
|
(function (State) {
|
||||||
|
|||||||
6
dist/save/index.js
vendored
6
dist/save/index.js
vendored
@ -59324,13 +59324,15 @@ var Inputs;
|
|||||||
Inputs["UploadChunkSize"] = "upload-chunk-size";
|
Inputs["UploadChunkSize"] = "upload-chunk-size";
|
||||||
Inputs["EnableCrossOsArchive"] = "enableCrossOsArchive";
|
Inputs["EnableCrossOsArchive"] = "enableCrossOsArchive";
|
||||||
Inputs["FailOnCacheMiss"] = "fail-on-cache-miss";
|
Inputs["FailOnCacheMiss"] = "fail-on-cache-miss";
|
||||||
Inputs["LookupOnly"] = "lookup-only"; // Input for cache, restore action
|
Inputs["LookupOnly"] = "lookup-only";
|
||||||
|
Inputs["SaveAlways"] = "save-always"; // Input for cache action
|
||||||
})(Inputs = exports.Inputs || (exports.Inputs = {}));
|
})(Inputs = exports.Inputs || (exports.Inputs = {}));
|
||||||
var Outputs;
|
var Outputs;
|
||||||
(function (Outputs) {
|
(function (Outputs) {
|
||||||
Outputs["CacheHit"] = "cache-hit";
|
Outputs["CacheHit"] = "cache-hit";
|
||||||
Outputs["CachePrimaryKey"] = "cache-primary-key";
|
Outputs["CachePrimaryKey"] = "cache-primary-key";
|
||||||
Outputs["CacheMatchedKey"] = "cache-matched-key"; // Output from restore action
|
Outputs["CacheMatchedKey"] = "cache-matched-key";
|
||||||
|
Outputs["SaveAlways"] = "save-always-d18d746b9"; // Output from cache action, with unique suffix for detection in post-if
|
||||||
})(Outputs = exports.Outputs || (exports.Outputs = {}));
|
})(Outputs = exports.Outputs || (exports.Outputs = {}));
|
||||||
var State;
|
var State;
|
||||||
(function (State) {
|
(function (State) {
|
||||||
|
|||||||
@ -5,13 +5,15 @@ export enum Inputs {
|
|||||||
UploadChunkSize = "upload-chunk-size", // Input for cache, save action
|
UploadChunkSize = "upload-chunk-size", // Input for cache, save action
|
||||||
EnableCrossOsArchive = "enableCrossOsArchive", // Input for cache, restore, save action
|
EnableCrossOsArchive = "enableCrossOsArchive", // Input for cache, restore, save action
|
||||||
FailOnCacheMiss = "fail-on-cache-miss", // Input for cache, restore action
|
FailOnCacheMiss = "fail-on-cache-miss", // Input for cache, restore action
|
||||||
LookupOnly = "lookup-only" // Input for cache, restore action
|
LookupOnly = "lookup-only", // Input for cache, restore action
|
||||||
|
SaveAlways = "save-always" // Input for cache action
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum Outputs {
|
export enum Outputs {
|
||||||
CacheHit = "cache-hit", // Output from cache, restore action
|
CacheHit = "cache-hit", // Output from cache, restore action
|
||||||
CachePrimaryKey = "cache-primary-key", // Output from 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
|
||||||
|
SaveAlways = "save-always-d18d746b9" // Output from cache action, with unique suffix for detection in post-if
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum State {
|
export enum State {
|
||||||
|
|||||||
@ -13,6 +13,11 @@ export async function restoreImpl(
|
|||||||
stateProvider: IStateProvider,
|
stateProvider: IStateProvider,
|
||||||
earlyExit?: boolean | undefined
|
earlyExit?: boolean | undefined
|
||||||
): Promise<string | undefined> {
|
): Promise<string | undefined> {
|
||||||
|
core.setOutput(
|
||||||
|
Outputs.SaveAlways,
|
||||||
|
core.getInput(Inputs.SaveAlways) || "false"
|
||||||
|
);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (!utils.isCacheFeatureAvailable()) {
|
if (!utils.isCacheFeatureAvailable()) {
|
||||||
core.setOutput(Outputs.CacheHit, "false");
|
core.setOutput(Outputs.CacheHit, "false");
|
||||||
|
|||||||
@ -16,6 +16,7 @@ interface CacheInput {
|
|||||||
enableCrossOsArchive?: boolean;
|
enableCrossOsArchive?: boolean;
|
||||||
failOnCacheMiss?: boolean;
|
failOnCacheMiss?: boolean;
|
||||||
lookupOnly?: boolean;
|
lookupOnly?: boolean;
|
||||||
|
saveAlways?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function setInputs(input: CacheInput): void {
|
export function setInputs(input: CacheInput): void {
|
||||||
@ -32,6 +33,8 @@ export function setInputs(input: CacheInput): void {
|
|||||||
setInput(Inputs.FailOnCacheMiss, input.failOnCacheMiss.toString());
|
setInput(Inputs.FailOnCacheMiss, input.failOnCacheMiss.toString());
|
||||||
input.lookupOnly !== undefined &&
|
input.lookupOnly !== undefined &&
|
||||||
setInput(Inputs.LookupOnly, input.lookupOnly.toString());
|
setInput(Inputs.LookupOnly, input.lookupOnly.toString());
|
||||||
|
input.saveAlways !== undefined &&
|
||||||
|
setInput(Inputs.SaveAlways, input.saveAlways.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
export function clearInputs(): void {
|
export function clearInputs(): void {
|
||||||
@ -42,4 +45,5 @@ export function clearInputs(): void {
|
|||||||
delete process.env[getInputName(Inputs.EnableCrossOsArchive)];
|
delete process.env[getInputName(Inputs.EnableCrossOsArchive)];
|
||||||
delete process.env[getInputName(Inputs.FailOnCacheMiss)];
|
delete process.env[getInputName(Inputs.FailOnCacheMiss)];
|
||||||
delete process.env[getInputName(Inputs.LookupOnly)];
|
delete process.env[getInputName(Inputs.LookupOnly)];
|
||||||
|
delete process.env[getInputName(Inputs.SaveAlways)];
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user