mirror of
https://github.com/actions/setup-go.git
synced 2026-04-27 07:24:25 +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
27fdb267c1
commit
c948a2c163
3 changed files with 14 additions and 0 deletions
|
|
@ -17,6 +17,9 @@ inputs:
|
||||||
default: true
|
default: true
|
||||||
cache-dependency-path:
|
cache-dependency-path:
|
||||||
description: 'Used to specify the path to a dependency file (e.g., go.mod, go.sum)'
|
description: 'Used to specify the path to a dependency file (e.g., go.mod, go.sum)'
|
||||||
|
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
|
||||||
architecture:
|
architecture:
|
||||||
description: 'Target architecture for Go to use. Examples: x86, x64. Will use system architecture by default.'
|
description: 'Target architecture for Go to use. Examples: x86, x64. Will use system architecture by default.'
|
||||||
outputs:
|
outputs:
|
||||||
|
|
|
||||||
5
dist/cache-save/index.js
vendored
5
dist/cache-save/index.js
vendored
|
|
@ -71548,6 +71548,11 @@ process.on('uncaughtException', e => {
|
||||||
function run(earlyExit) {
|
function run(earlyExit) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
try {
|
try {
|
||||||
|
const cacheWriteEnabled = core.getInput('cache-write');
|
||||||
|
if (cacheWriteEnabled === 'false') {
|
||||||
|
core.info('Cache write is disabled (read-only mode). Skipping cache save.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
const cacheInput = core.getBooleanInput('cache');
|
const cacheInput = core.getBooleanInput('cache');
|
||||||
if (cacheInput) {
|
if (cacheInput) {
|
||||||
yield cachePackages();
|
yield cachePackages();
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,12 @@ process.on('uncaughtException', e => {
|
||||||
|
|
||||||
export async function run(earlyExit?: boolean) {
|
export async function run(earlyExit?: boolean) {
|
||||||
try {
|
try {
|
||||||
|
const cacheWriteEnabled = core.getInput('cache-write');
|
||||||
|
if (cacheWriteEnabled === 'false') {
|
||||||
|
core.info('Cache write is disabled (read-only mode). Skipping cache save.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const cacheInput = core.getBooleanInput('cache');
|
const cacheInput = core.getBooleanInput('cache');
|
||||||
if (cacheInput) {
|
if (cacheInput) {
|
||||||
await cachePackages();
|
await cachePackages();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue