From b38d23e36a11796ac1b9ec54314981af10c03a2c Mon Sep 17 00:00:00 2001 From: helly25 Date: Tue, 11 Mar 2025 21:19:20 +0100 Subject: [PATCH] Add new setting save-on-success. * Proposal to implement https://github.com/actions/cache/issues/1570 --- README.md | 1 + action.yml | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3f07f15..82e78c3 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,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` * `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` +* `save-on-success` - If true, then the cache is written in the post action on success, or (if false) the cache will only be restored if available. #### Environment Variables diff --git a/action.yml b/action.yml index 7af7458..2bc6e4b 100644 --- a/action.yml +++ b/action.yml @@ -26,13 +26,18 @@ inputs: description: 'Check if a cache entry exists for the given input(s) (key, restore-keys) without downloading the cache' default: 'false' required: false + save-on-success: + description: 'Whether the cache is written in the post action on success or (if false) is only restored' + default: 'true' + required: false save-always: description: 'Run the post step to save the cache even if another step before fails' default: 'false' required: false deprecationMessage: | save-always does not work as intended and will be removed in a future release. - A separate `actions/cache/restore` step should be used instead. + If you only want to control whether a new cache will be written use `save-always` instead. + Otherwise a separate `actions/cache/restore` step should be used instead. See https://github.com/actions/cache/tree/main/save#always-save-cache for more details. outputs: cache-hit: @@ -41,7 +46,7 @@ runs: using: 'node20' main: 'dist/restore/index.js' post: 'dist/save/index.js' - post-if: "success()" + post-if: "success() && github.event.inputs.save-on-success" branding: icon: 'archive' color: 'gray-dark'