mirror of
https://github.com/actions/setup-node.git
synced 2026-03-14 05:27:02 +00:00
feat: add cache-write input for read-only cache mode
Add a 'cache-write' input (default: true) that controls whether the cache is saved at the end of the workflow. When set to 'false', the action will restore cached dependencies but skip saving, providing a read-only cache mode. This is useful for preventing cache poisoning attacks from untrusted PR builds while still benefiting from cached dependencies.
This commit is contained in:
parent
53b83947a5
commit
974c02c884
@ -25,6 +25,9 @@ inputs:
|
||||
default: true
|
||||
cache-dependency-path:
|
||||
description: 'Used to specify the path to a dependency file: package-lock.json, yarn.lock, etc. Supports wildcards or a list of file names for caching multiple dependencies.'
|
||||
cache-write:
|
||||
description: 'Whether to save the cache at the end of the workflow. Set to false for cache read-only mode, useful for preventing cache poisoning from untrusted PR builds.'
|
||||
default: true
|
||||
mirror:
|
||||
description: 'Used to specify an alternative mirror to download Node.js binaries from'
|
||||
mirror-token:
|
||||
|
||||
5
dist/cache-save/index.js
vendored
5
dist/cache-save/index.js
vendored
@ -71532,6 +71532,11 @@ process.on('uncaughtException', e => {
|
||||
// Added early exit to resolve issue with slow post action step:
|
||||
async function run(earlyExit) {
|
||||
try {
|
||||
const cacheWriteEnabled = core.getInput('cache-write');
|
||||
if (cacheWriteEnabled === 'false') {
|
||||
core.info('Cache write is disabled (read-only mode). Skipping cache save.');
|
||||
return;
|
||||
}
|
||||
const cacheLock = core.getState(constants_1.State.CachePackageManager);
|
||||
if (cacheLock) {
|
||||
await cachePackages(cacheLock);
|
||||
|
||||
@ -16,6 +16,12 @@ process.on('uncaughtException', e => {
|
||||
// Added early exit to resolve issue with slow post action step:
|
||||
export async function run(earlyExit?: boolean) {
|
||||
try {
|
||||
const cacheWriteEnabled = core.getInput('cache-write');
|
||||
if (cacheWriteEnabled === 'false') {
|
||||
core.info('Cache write is disabled (read-only mode). Skipping cache save.');
|
||||
return;
|
||||
}
|
||||
|
||||
const cacheLock = core.getState(State.CachePackageManager);
|
||||
|
||||
if (cacheLock) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user