mirror of
				https://code.forgejo.org/actions/cache.git
				synced 2025-10-31 12:42:28 +00:00 
			
		
		
		
	Merge pull request #263 from actions/users/aiyan/allow-all-events
Allow all events to access cache
This commit is contained in:
		
						commit
						16a133d9a7
					
				
					 9 changed files with 32 additions and 63 deletions
				
			
		|  | @ -4,7 +4,7 @@ import { promises as fs } from "fs"; | |||
| import * as os from "os"; | ||||
| import * as path from "path"; | ||||
| 
 | ||||
| import { Events, Outputs, State } from "../src/constants"; | ||||
| import { Events, Outputs, RefKey, State } from "../src/constants"; | ||||
| import { ArtifactCacheEntry } from "../src/contracts"; | ||||
| import * as actionUtils from "../src/utils/actionUtils"; | ||||
| 
 | ||||
|  | @ -19,6 +19,7 @@ function getTempDir(): string { | |||
| 
 | ||||
| afterEach(() => { | ||||
|     delete process.env[Events.Key]; | ||||
|     delete process.env[RefKey]; | ||||
| }); | ||||
| 
 | ||||
| afterAll(async () => { | ||||
|  | @ -185,7 +186,7 @@ test("logWarning logs a message with a warning prefix", () => { | |||
|     expect(infoMock).toHaveBeenCalledWith(`[warning]${message}`); | ||||
| }); | ||||
| 
 | ||||
| test("isValidEvent returns false for unknown event", () => { | ||||
| test("isValidEvent returns false for event that does not have a branch or tag", () => { | ||||
|     const event = "foo"; | ||||
|     process.env[Events.Key] = event; | ||||
| 
 | ||||
|  | @ -325,18 +326,10 @@ test("resolvePaths exclusion pattern returns not found", async () => { | |||
|     } | ||||
| }); | ||||
| 
 | ||||
| test("isValidEvent returns true for push event", () => { | ||||
| test("isValidEvent returns true for event that has a ref", () => { | ||||
|     const event = Events.Push; | ||||
|     process.env[Events.Key] = event; | ||||
| 
 | ||||
|     const isValidEvent = actionUtils.isValidEvent(); | ||||
| 
 | ||||
|     expect(isValidEvent).toBe(true); | ||||
| }); | ||||
| 
 | ||||
| test("isValidEvent returns true for pull request event", () => { | ||||
|     const event = Events.PullRequest; | ||||
|     process.env[Events.Key] = event; | ||||
|     process.env[RefKey] = "ref/heads/feature"; | ||||
| 
 | ||||
|     const isValidEvent = actionUtils.isValidEvent(); | ||||
| 
 | ||||
|  |  | |||
|  | @ -6,7 +6,8 @@ import { | |||
|     CacheFilename, | ||||
|     CompressionMethod, | ||||
|     Events, | ||||
|     Inputs | ||||
|     Inputs, | ||||
|     RefKey | ||||
| } from "../src/constants"; | ||||
| import { ArtifactCacheEntry } from "../src/contracts"; | ||||
| import run from "../src/restore"; | ||||
|  | @ -31,11 +32,6 @@ beforeAll(() => { | |||
|         return actualUtils.isValidEvent(); | ||||
|     }); | ||||
| 
 | ||||
|     jest.spyOn(actionUtils, "getSupportedEvents").mockImplementation(() => { | ||||
|         const actualUtils = jest.requireActual("../src/utils/actionUtils"); | ||||
|         return actualUtils.getSupportedEvents(); | ||||
|     }); | ||||
| 
 | ||||
|     jest.spyOn(actionUtils, "getCacheFileName").mockImplementation(cm => { | ||||
|         const actualUtils = jest.requireActual("../src/utils/actionUtils"); | ||||
|         return actualUtils.getCacheFileName(cm); | ||||
|  | @ -44,11 +40,13 @@ beforeAll(() => { | |||
| 
 | ||||
| beforeEach(() => { | ||||
|     process.env[Events.Key] = Events.Push; | ||||
|     process.env[RefKey] = "refs/heads/feature-branch"; | ||||
| }); | ||||
| 
 | ||||
| afterEach(() => { | ||||
|     testUtils.clearInputs(); | ||||
|     delete process.env[Events.Key]; | ||||
|     delete process.env[RefKey]; | ||||
| }); | ||||
| 
 | ||||
| test("restore with invalid event outputs warning", async () => { | ||||
|  | @ -56,9 +54,10 @@ test("restore with invalid event outputs warning", async () => { | |||
|     const failedMock = jest.spyOn(core, "setFailed"); | ||||
|     const invalidEvent = "commit_comment"; | ||||
|     process.env[Events.Key] = invalidEvent; | ||||
|     delete process.env[RefKey]; | ||||
|     await run(); | ||||
|     expect(logWarningMock).toHaveBeenCalledWith( | ||||
|         `Event Validation Error: The event type ${invalidEvent} is not supported. Only push, pull_request events are supported at this time.` | ||||
|         `Event Validation Error: The event type ${invalidEvent} is not supported because it's not tied to a branch or tag ref.` | ||||
|     ); | ||||
|     expect(failedMock).toHaveBeenCalledTimes(0); | ||||
| }); | ||||
|  |  | |||
|  | @ -6,7 +6,8 @@ import { | |||
|     CacheFilename, | ||||
|     CompressionMethod, | ||||
|     Events, | ||||
|     Inputs | ||||
|     Inputs, | ||||
|     RefKey | ||||
| } from "../src/constants"; | ||||
| import { ArtifactCacheEntry } from "../src/contracts"; | ||||
| import run from "../src/save"; | ||||
|  | @ -41,11 +42,6 @@ beforeAll(() => { | |||
|         return actualUtils.isValidEvent(); | ||||
|     }); | ||||
| 
 | ||||
|     jest.spyOn(actionUtils, "getSupportedEvents").mockImplementation(() => { | ||||
|         const actualUtils = jest.requireActual("../src/utils/actionUtils"); | ||||
|         return actualUtils.getSupportedEvents(); | ||||
|     }); | ||||
| 
 | ||||
|     jest.spyOn(actionUtils, "resolvePaths").mockImplementation( | ||||
|         async filePaths => { | ||||
|             return filePaths.map(x => path.resolve(x)); | ||||
|  | @ -64,11 +60,13 @@ beforeAll(() => { | |||
| 
 | ||||
| beforeEach(() => { | ||||
|     process.env[Events.Key] = Events.Push; | ||||
|     process.env[RefKey] = "refs/heads/feature-branch"; | ||||
| }); | ||||
| 
 | ||||
| afterEach(() => { | ||||
|     testUtils.clearInputs(); | ||||
|     delete process.env[Events.Key]; | ||||
|     delete process.env[RefKey]; | ||||
| }); | ||||
| 
 | ||||
| test("save with invalid event outputs warning", async () => { | ||||
|  | @ -76,9 +74,10 @@ test("save with invalid event outputs warning", async () => { | |||
|     const failedMock = jest.spyOn(core, "setFailed"); | ||||
|     const invalidEvent = "commit_comment"; | ||||
|     process.env[Events.Key] = invalidEvent; | ||||
|     delete process.env[RefKey]; | ||||
|     await run(); | ||||
|     expect(logWarningMock).toHaveBeenCalledWith( | ||||
|         `Event Validation Error: The event type ${invalidEvent} is not supported. Only push, pull_request events are supported at this time.` | ||||
|         `Event Validation Error: The event type ${invalidEvent} is not supported because it's not tied to a branch or tag ref.` | ||||
|     ); | ||||
|     expect(failedMock).toHaveBeenCalledTimes(0); | ||||
| }); | ||||
|  |  | |||
							
								
								
									
										15
									
								
								dist/restore/index.js
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								dist/restore/index.js
									
										
									
									
										vendored
									
									
								
							|  | @ -3345,16 +3345,10 @@ function resolvePaths(patterns) { | |||
|     }); | ||||
| } | ||||
| exports.resolvePaths = resolvePaths; | ||||
| function getSupportedEvents() { | ||||
|     return [constants_1.Events.Push, constants_1.Events.PullRequest]; | ||||
| } | ||||
| exports.getSupportedEvents = getSupportedEvents; | ||||
| // Currently the cache token is only authorized for push and pull_request events
 | ||||
| // All other events will fail when reading and saving the cache
 | ||||
| // Cache token authorized for all events that are tied to a ref
 | ||||
| // See GitHub Context https://help.github.com/actions/automating-your-workflow-with-github-actions/contexts-and-expression-syntax-for-github-actions#github-context
 | ||||
| function isValidEvent() { | ||||
|     const githubEvent = process.env[constants_1.Events.Key] || ""; | ||||
|     return getSupportedEvents().includes(githubEvent); | ||||
|     return constants_1.RefKey in process.env && Boolean(process.env[constants_1.RefKey]); | ||||
| } | ||||
| exports.isValidEvent = isValidEvent; | ||||
| function unlinkFile(path) { | ||||
|  | @ -4613,6 +4607,7 @@ var CompressionMethod; | |||
| // over the socket during this period, the socket is destroyed and the download
 | ||||
| // is aborted.
 | ||||
| exports.SocketTimeout = 5000; | ||||
| exports.RefKey = "GITHUB_REF"; | ||||
| 
 | ||||
| 
 | ||||
| /***/ }), | ||||
|  | @ -4706,9 +4701,7 @@ function run() { | |||
|         try { | ||||
|             // Validate inputs, this can cause task failure
 | ||||
|             if (!utils.isValidEvent()) { | ||||
|                 utils.logWarning(`Event Validation Error: The event type ${process.env[constants_1.Events.Key]} is not supported. Only ${utils | ||||
|                     .getSupportedEvents() | ||||
|                     .join(", ")} events are supported at this time.`);
 | ||||
|                 utils.logWarning(`Event Validation Error: The event type ${process.env[constants_1.Events.Key]} is not supported because it's not tied to a branch or tag ref.`); | ||||
|                 return; | ||||
|             } | ||||
|             const primaryKey = core.getInput(constants_1.Inputs.Key, { required: true }); | ||||
|  |  | |||
							
								
								
									
										15
									
								
								dist/save/index.js
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								dist/save/index.js
									
										
									
									
										vendored
									
									
								
							|  | @ -3345,16 +3345,10 @@ function resolvePaths(patterns) { | |||
|     }); | ||||
| } | ||||
| exports.resolvePaths = resolvePaths; | ||||
| function getSupportedEvents() { | ||||
|     return [constants_1.Events.Push, constants_1.Events.PullRequest]; | ||||
| } | ||||
| exports.getSupportedEvents = getSupportedEvents; | ||||
| // Currently the cache token is only authorized for push and pull_request events
 | ||||
| // All other events will fail when reading and saving the cache
 | ||||
| // Cache token authorized for all events that are tied to a ref
 | ||||
| // See GitHub Context https://help.github.com/actions/automating-your-workflow-with-github-actions/contexts-and-expression-syntax-for-github-actions#github-context
 | ||||
| function isValidEvent() { | ||||
|     const githubEvent = process.env[constants_1.Events.Key] || ""; | ||||
|     return getSupportedEvents().includes(githubEvent); | ||||
|     return constants_1.RefKey in process.env && Boolean(process.env[constants_1.RefKey]); | ||||
| } | ||||
| exports.isValidEvent = isValidEvent; | ||||
| function unlinkFile(path) { | ||||
|  | @ -4604,9 +4598,7 @@ function run() { | |||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         try { | ||||
|             if (!utils.isValidEvent()) { | ||||
|                 utils.logWarning(`Event Validation Error: The event type ${process.env[constants_1.Events.Key]} is not supported. Only ${utils | ||||
|                     .getSupportedEvents() | ||||
|                     .join(", ")} events are supported at this time.`);
 | ||||
|                 utils.logWarning(`Event Validation Error: The event type ${process.env[constants_1.Events.Key]} is not supported because it's not tied to a branch or tag ref.`); | ||||
|                 return; | ||||
|             } | ||||
|             const state = utils.getCacheState(); | ||||
|  | @ -4702,6 +4694,7 @@ var CompressionMethod; | |||
| // over the socket during this period, the socket is destroyed and the download
 | ||||
| // is aborted.
 | ||||
| exports.SocketTimeout = 5000; | ||||
| exports.RefKey = "GITHUB_REF"; | ||||
| 
 | ||||
| 
 | ||||
| /***/ }), | ||||
|  |  | |||
|  | @ -33,3 +33,5 @@ export enum CompressionMethod { | |||
| // over the socket during this period, the socket is destroyed and the download
 | ||||
| // is aborted.
 | ||||
| export const SocketTimeout = 5000; | ||||
| 
 | ||||
| export const RefKey = "GITHUB_REF"; | ||||
|  |  | |||
|  | @ -13,9 +13,7 @@ async function run(): Promise<void> { | |||
|             utils.logWarning( | ||||
|                 `Event Validation Error: The event type ${ | ||||
|                     process.env[Events.Key] | ||||
|                 } is not supported. Only ${utils | ||||
|                     .getSupportedEvents() | ||||
|                     .join(", ")} events are supported at this time.` | ||||
|                 } is not supported because it's not tied to a branch or tag ref.` | ||||
|             ); | ||||
|             return; | ||||
|         } | ||||
|  |  | |||
|  | @ -12,9 +12,7 @@ async function run(): Promise<void> { | |||
|             utils.logWarning( | ||||
|                 `Event Validation Error: The event type ${ | ||||
|                     process.env[Events.Key] | ||||
|                 } is not supported. Only ${utils | ||||
|                     .getSupportedEvents() | ||||
|                     .join(", ")} events are supported at this time.` | ||||
|                 } is not supported because it's not tied to a branch or tag ref.` | ||||
|             ); | ||||
|             return; | ||||
|         } | ||||
|  |  | |||
|  | @ -10,8 +10,8 @@ import * as uuidV4 from "uuid/v4"; | |||
| import { | ||||
|     CacheFilename, | ||||
|     CompressionMethod, | ||||
|     Events, | ||||
|     Outputs, | ||||
|     RefKey, | ||||
|     State | ||||
| } from "../constants"; | ||||
| import { ArtifactCacheEntry } from "../contracts"; | ||||
|  | @ -108,16 +108,10 @@ export async function resolvePaths(patterns: string[]): Promise<string[]> { | |||
|     return paths; | ||||
| } | ||||
| 
 | ||||
| export function getSupportedEvents(): string[] { | ||||
|     return [Events.Push, Events.PullRequest]; | ||||
| } | ||||
| 
 | ||||
| // Currently the cache token is only authorized for push and pull_request events
 | ||||
| // All other events will fail when reading and saving the cache
 | ||||
| // Cache token authorized for all events that are tied to a ref
 | ||||
| // See GitHub Context https://help.github.com/actions/automating-your-workflow-with-github-actions/contexts-and-expression-syntax-for-github-actions#github-context
 | ||||
| export function isValidEvent(): boolean { | ||||
|     const githubEvent = process.env[Events.Key] || ""; | ||||
|     return getSupportedEvents().includes(githubEvent); | ||||
|     return RefKey in process.env && Boolean(process.env[RefKey]); | ||||
| } | ||||
| 
 | ||||
| export function unlinkFile(path: fs.PathLike): Promise<void> { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue