mirror of https://github.com/actions/cache.git
				
				
				
			Consuming 3.0 actions/cache
This commit is contained in:
		
							parent
							
								
									a0efc56c52
								
							
						
					
					
						commit
						c75dca6de7
					
				|  | @ -267,7 +267,6 @@ test("save with large cache outputs warning", async () => { | |||
| }); | ||||
| 
 | ||||
| test("save with reserve cache failure outputs warning", async () => { | ||||
|     const infoMock = jest.spyOn(core, "info"); | ||||
|     const logWarningMock = jest.spyOn(actionUtils, "logWarning"); | ||||
|     const failedMock = jest.spyOn(core, "setFailed"); | ||||
| 
 | ||||
|  | @ -306,10 +305,10 @@ test("save with reserve cache failure outputs warning", async () => { | |||
|         expect.anything() | ||||
|     ); | ||||
| 
 | ||||
|     expect(infoMock).toHaveBeenCalledWith( | ||||
|     expect(logWarningMock).toHaveBeenCalledWith( | ||||
|         `Unable to reserve cache with key ${primaryKey}, another job may be creating this cache.` | ||||
|     ); | ||||
|     expect(logWarningMock).toHaveBeenCalledTimes(0); | ||||
|     expect(logWarningMock).toHaveBeenCalledTimes(1); | ||||
|     expect(failedMock).toHaveBeenCalledTimes(0); | ||||
| }); | ||||
| 
 | ||||
|  |  | |||
|  | @ -46850,17 +46850,18 @@ function restoreCache(paths, primaryKey, restoreKeys, options) { | |||
|             checkKey(key); | ||||
|         } | ||||
|         const compressionMethod = yield utils.getCompressionMethod(); | ||||
|         // path are needed to compute version
 | ||||
|         const cacheEntry = yield cacheHttpClient.getCacheEntry(keys, paths, { | ||||
|             compressionMethod | ||||
|         }); | ||||
|         if (!(cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.archiveLocation)) { | ||||
|             // Cache not found
 | ||||
|             return undefined; | ||||
|         } | ||||
|         const archivePath = path.join(yield utils.createTempDirectory(), utils.getCacheFileName(compressionMethod)); | ||||
|         core.debug(`Archive Path: ${archivePath}`); | ||||
|         let archivePath = ''; | ||||
|         try { | ||||
|             // path are needed to compute version
 | ||||
|             const cacheEntry = yield cacheHttpClient.getCacheEntry(keys, paths, { | ||||
|                 compressionMethod | ||||
|             }); | ||||
|             if (!(cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.archiveLocation)) { | ||||
|                 // Cache not found
 | ||||
|                 return undefined; | ||||
|             } | ||||
|             archivePath = path.join(yield utils.createTempDirectory(), utils.getCacheFileName(compressionMethod)); | ||||
|             core.debug(`Archive Path: ${archivePath}`); | ||||
|             // Download the cache from the cache entry
 | ||||
|             yield cacheHttpClient.downloadCache(cacheEntry.archiveLocation, archivePath, options); | ||||
|             if (core.isDebug()) { | ||||
|  | @ -46870,6 +46871,17 @@ function restoreCache(paths, primaryKey, restoreKeys, options) { | |||
|             core.info(`Cache Size: ~${Math.round(archiveFileSize / (1024 * 1024))} MB (${archiveFileSize} B)`); | ||||
|             yield tar_1.extractTar(archivePath, compressionMethod); | ||||
|             core.info('Cache restored successfully'); | ||||
|             return cacheEntry.cacheKey; | ||||
|         } | ||||
|         catch (error) { | ||||
|             const typedError = error; | ||||
|             if (typedError.name === ValidationError.name) { | ||||
|                 throw error; | ||||
|             } | ||||
|             else { | ||||
|                 // Supress all non-validation cache related errors because caching should be optional
 | ||||
|                 core.warning(`Failed to restore: ${error.message}`); | ||||
|             } | ||||
|         } | ||||
|         finally { | ||||
|             // Try to delete the archive to save space
 | ||||
|  | @ -46880,7 +46892,7 @@ function restoreCache(paths, primaryKey, restoreKeys, options) { | |||
|                 core.debug(`Failed to delete archive: ${error}`); | ||||
|             } | ||||
|         } | ||||
|         return cacheEntry.cacheKey; | ||||
|         return undefined; | ||||
|     }); | ||||
| } | ||||
| exports.restoreCache = restoreCache; | ||||
|  | @ -46898,7 +46910,7 @@ function saveCache(paths, key, options) { | |||
|         checkPaths(paths); | ||||
|         checkKey(key); | ||||
|         const compressionMethod = yield utils.getCompressionMethod(); | ||||
|         let cacheId = null; | ||||
|         let cacheId = -1; | ||||
|         const cachePaths = yield utils.resolvePaths(paths); | ||||
|         core.debug('Cache Paths:'); | ||||
|         core.debug(`${JSON.stringify(cachePaths)}`); | ||||
|  | @ -46937,6 +46949,18 @@ function saveCache(paths, key, options) { | |||
|             core.debug(`Saving Cache (ID: ${cacheId})`); | ||||
|             yield cacheHttpClient.saveCache(cacheId, archivePath, options); | ||||
|         } | ||||
|         catch (error) { | ||||
|             const typedError = error; | ||||
|             if (typedError.name === ValidationError.name) { | ||||
|                 throw error; | ||||
|             } | ||||
|             else if (typedError.name === ReserveCacheError.name) { | ||||
|                 core.info(`Failed to save: ${typedError.message}`); | ||||
|             } | ||||
|             else { | ||||
|                 core.warning(`Failed to save: ${typedError.message}`); | ||||
|             } | ||||
|         } | ||||
|         finally { | ||||
|             // Try to delete the archive to save space
 | ||||
|             try { | ||||
|  | @ -48996,31 +49020,19 @@ function run() { | |||
|             const cachePaths = utils.getInputAsArray(constants_1.Inputs.Path, { | ||||
|                 required: true | ||||
|             }); | ||||
|             try { | ||||
|                 const cacheKey = yield cache.restoreCache(cachePaths, primaryKey, restoreKeys); | ||||
|                 if (!cacheKey) { | ||||
|                     core.info(`Cache not found for input keys: ${[ | ||||
|                         primaryKey, | ||||
|                         ...restoreKeys | ||||
|                     ].join(", ")}`);
 | ||||
|                     return; | ||||
|                 } | ||||
|                 // Store the matched cache key
 | ||||
|                 utils.setCacheState(cacheKey); | ||||
|                 const isExactKeyMatch = utils.isExactKeyMatch(primaryKey, cacheKey); | ||||
|                 utils.setCacheHitOutput(isExactKeyMatch); | ||||
|                 core.info(`Cache restored from key: ${cacheKey}`); | ||||
|             } | ||||
|             catch (error) { | ||||
|                 const typedError = error; | ||||
|                 if (typedError.name === cache.ValidationError.name) { | ||||
|                     throw error; | ||||
|                 } | ||||
|                 else { | ||||
|                     utils.logWarning(typedError.message); | ||||
|                     utils.setCacheHitOutput(false); | ||||
|                 } | ||||
|             const cacheKey = yield cache.restoreCache(cachePaths, primaryKey, restoreKeys); | ||||
|             if (!cacheKey) { | ||||
|                 core.info(`Cache not found for input keys: ${[ | ||||
|                     primaryKey, | ||||
|                     ...restoreKeys | ||||
|                 ].join(", ")}`);
 | ||||
|                 return; | ||||
|             } | ||||
|             // Store the matched cache key
 | ||||
|             utils.setCacheState(cacheKey); | ||||
|             const isExactKeyMatch = utils.isExactKeyMatch(primaryKey, cacheKey); | ||||
|             utils.setCacheHitOutput(isExactKeyMatch); | ||||
|             core.info(`Cache restored from key: ${cacheKey}`); | ||||
|         } | ||||
|         catch (error) { | ||||
|             core.setFailed(error.message); | ||||
|  |  | |||
|  | @ -46792,24 +46792,13 @@ function run() { | |||
|             const cachePaths = utils.getInputAsArray(constants_1.Inputs.Path, { | ||||
|                 required: true | ||||
|             }); | ||||
|             try { | ||||
|                 yield cache.saveCache(cachePaths, primaryKey, { | ||||
|                     uploadChunkSize: utils.getInputAsInt(constants_1.Inputs.UploadChunkSize) | ||||
|                 }); | ||||
|                 core.info(`Cache saved with key: ${primaryKey}`); | ||||
|             } | ||||
|             catch (error) { | ||||
|                 const typedError = error; | ||||
|                 if (typedError.name === cache.ValidationError.name) { | ||||
|                     throw error; | ||||
|                 } | ||||
|                 else if (typedError.name === cache.ReserveCacheError.name) { | ||||
|                     core.info(typedError.message); | ||||
|                 } | ||||
|                 else { | ||||
|                     utils.logWarning(typedError.message); | ||||
|                 } | ||||
|             const cacheId = yield cache.saveCache(cachePaths, primaryKey, { | ||||
|                 uploadChunkSize: utils.getInputAsInt(constants_1.Inputs.UploadChunkSize) | ||||
|             }); | ||||
|             if (cacheId == -1) { | ||||
|                 return; | ||||
|             } | ||||
|             core.info(`Cache saved with key: ${primaryKey}`); | ||||
|         } | ||||
|         catch (error) { | ||||
|             utils.logWarning(error.message); | ||||
|  | @ -46948,17 +46937,18 @@ function restoreCache(paths, primaryKey, restoreKeys, options) { | |||
|             checkKey(key); | ||||
|         } | ||||
|         const compressionMethod = yield utils.getCompressionMethod(); | ||||
|         // path are needed to compute version
 | ||||
|         const cacheEntry = yield cacheHttpClient.getCacheEntry(keys, paths, { | ||||
|             compressionMethod | ||||
|         }); | ||||
|         if (!(cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.archiveLocation)) { | ||||
|             // Cache not found
 | ||||
|             return undefined; | ||||
|         } | ||||
|         const archivePath = path.join(yield utils.createTempDirectory(), utils.getCacheFileName(compressionMethod)); | ||||
|         core.debug(`Archive Path: ${archivePath}`); | ||||
|         let archivePath = ''; | ||||
|         try { | ||||
|             // path are needed to compute version
 | ||||
|             const cacheEntry = yield cacheHttpClient.getCacheEntry(keys, paths, { | ||||
|                 compressionMethod | ||||
|             }); | ||||
|             if (!(cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.archiveLocation)) { | ||||
|                 // Cache not found
 | ||||
|                 return undefined; | ||||
|             } | ||||
|             archivePath = path.join(yield utils.createTempDirectory(), utils.getCacheFileName(compressionMethod)); | ||||
|             core.debug(`Archive Path: ${archivePath}`); | ||||
|             // Download the cache from the cache entry
 | ||||
|             yield cacheHttpClient.downloadCache(cacheEntry.archiveLocation, archivePath, options); | ||||
|             if (core.isDebug()) { | ||||
|  | @ -46968,6 +46958,17 @@ function restoreCache(paths, primaryKey, restoreKeys, options) { | |||
|             core.info(`Cache Size: ~${Math.round(archiveFileSize / (1024 * 1024))} MB (${archiveFileSize} B)`); | ||||
|             yield tar_1.extractTar(archivePath, compressionMethod); | ||||
|             core.info('Cache restored successfully'); | ||||
|             return cacheEntry.cacheKey; | ||||
|         } | ||||
|         catch (error) { | ||||
|             const typedError = error; | ||||
|             if (typedError.name === ValidationError.name) { | ||||
|                 throw error; | ||||
|             } | ||||
|             else { | ||||
|                 // Supress all non-validation cache related errors because caching should be optional
 | ||||
|                 core.warning(`Failed to restore: ${error.message}`); | ||||
|             } | ||||
|         } | ||||
|         finally { | ||||
|             // Try to delete the archive to save space
 | ||||
|  | @ -46978,7 +46979,7 @@ function restoreCache(paths, primaryKey, restoreKeys, options) { | |||
|                 core.debug(`Failed to delete archive: ${error}`); | ||||
|             } | ||||
|         } | ||||
|         return cacheEntry.cacheKey; | ||||
|         return undefined; | ||||
|     }); | ||||
| } | ||||
| exports.restoreCache = restoreCache; | ||||
|  | @ -46996,7 +46997,7 @@ function saveCache(paths, key, options) { | |||
|         checkPaths(paths); | ||||
|         checkKey(key); | ||||
|         const compressionMethod = yield utils.getCompressionMethod(); | ||||
|         let cacheId = null; | ||||
|         let cacheId = -1; | ||||
|         const cachePaths = yield utils.resolvePaths(paths); | ||||
|         core.debug('Cache Paths:'); | ||||
|         core.debug(`${JSON.stringify(cachePaths)}`); | ||||
|  | @ -47035,6 +47036,18 @@ function saveCache(paths, key, options) { | |||
|             core.debug(`Saving Cache (ID: ${cacheId})`); | ||||
|             yield cacheHttpClient.saveCache(cacheId, archivePath, options); | ||||
|         } | ||||
|         catch (error) { | ||||
|             const typedError = error; | ||||
|             if (typedError.name === ValidationError.name) { | ||||
|                 throw error; | ||||
|             } | ||||
|             else if (typedError.name === ReserveCacheError.name) { | ||||
|                 core.info(`Failed to save: ${typedError.message}`); | ||||
|             } | ||||
|             else { | ||||
|                 core.warning(`Failed to save: ${typedError.message}`); | ||||
|             } | ||||
|         } | ||||
|         finally { | ||||
|             // Try to delete the archive to save space
 | ||||
|             try { | ||||
|  |  | |||
|  | @ -9,7 +9,7 @@ | |||
|       "version": "3.0.4", | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@actions/cache": "^2.0.6", | ||||
|         "@actions/cache": "file:actions-cache-3.0.0.tgz", | ||||
|         "@actions/core": "^1.7.0", | ||||
|         "@actions/exec": "^1.1.1", | ||||
|         "@actions/io": "^1.1.2" | ||||
|  | @ -36,9 +36,10 @@ | |||
|       } | ||||
|     }, | ||||
|     "node_modules/@actions/cache": { | ||||
|       "version": "2.0.6", | ||||
|       "resolved": "https://registry.npmjs.org/@actions/cache/-/cache-2.0.6.tgz", | ||||
|       "integrity": "sha512-Z39ZrWaTRRPaV/AOQdY7hve+Iy/HloH5prpz+k+0lZgGQs/3SeO0UYSIakVuXOk2pdMZnl0Nv0PoK1rmh9YfGQ==", | ||||
|       "version": "3.0.0", | ||||
|       "resolved": "file:actions-cache-3.0.0.tgz", | ||||
|       "integrity": "sha512-LewCqxvgJr6DJjNAsIYI445b6crhMb+pkmWs8LdPsZ8jxA+3XRBI/RjLMRD0vgjUK4ZJwNF1sWF05nrhM6zfRw==", | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@actions/core": "^1.2.6", | ||||
|         "@actions/exec": "^1.0.1", | ||||
|  | @ -9533,9 +9534,8 @@ | |||
|   }, | ||||
|   "dependencies": { | ||||
|     "@actions/cache": { | ||||
|       "version": "2.0.6", | ||||
|       "resolved": "https://registry.npmjs.org/@actions/cache/-/cache-2.0.6.tgz", | ||||
|       "integrity": "sha512-Z39ZrWaTRRPaV/AOQdY7hve+Iy/HloH5prpz+k+0lZgGQs/3SeO0UYSIakVuXOk2pdMZnl0Nv0PoK1rmh9YfGQ==", | ||||
|       "version": "file:actions-cache-3.0.0.tgz", | ||||
|       "integrity": "sha512-LewCqxvgJr6DJjNAsIYI445b6crhMb+pkmWs8LdPsZ8jxA+3XRBI/RjLMRD0vgjUK4ZJwNF1sWF05nrhM6zfRw==", | ||||
|       "requires": { | ||||
|         "@actions/core": "^1.2.6", | ||||
|         "@actions/exec": "^1.0.1", | ||||
|  |  | |||
|  | @ -23,7 +23,7 @@ | |||
|   "author": "GitHub", | ||||
|   "license": "MIT", | ||||
|   "dependencies": { | ||||
|     "@actions/cache": "^2.0.6", | ||||
|     "@actions/cache": "file:actions-cache-3.0.0.tgz", | ||||
|     "@actions/core": "^1.7.0", | ||||
|     "@actions/exec": "^1.1.1", | ||||
|     "@actions/io": "^1.1.2" | ||||
|  |  | |||
|  | @ -29,38 +29,29 @@ async function run(): Promise<void> { | |||
|             required: true | ||||
|         }); | ||||
| 
 | ||||
|         try { | ||||
|             const cacheKey = await cache.restoreCache( | ||||
|                 cachePaths, | ||||
|                 primaryKey, | ||||
|                 restoreKeys | ||||
|         const cacheKey = await cache.restoreCache( | ||||
|             cachePaths, | ||||
|             primaryKey, | ||||
|             restoreKeys | ||||
|         ); | ||||
|          | ||||
|         if (!cacheKey) { | ||||
|             core.info( | ||||
|                 `Cache not found for input keys: ${[ | ||||
|                     primaryKey, | ||||
|                     ...restoreKeys | ||||
|                  ].join(", ")}` | ||||
|             ); | ||||
|             if (!cacheKey) { | ||||
|                 core.info( | ||||
|                     `Cache not found for input keys: ${[ | ||||
|                         primaryKey, | ||||
|                         ...restoreKeys | ||||
|                     ].join(", ")}` | ||||
|                 ); | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             // Store the matched cache key
 | ||||
|             utils.setCacheState(cacheKey); | ||||
| 
 | ||||
|             const isExactKeyMatch = utils.isExactKeyMatch(primaryKey, cacheKey); | ||||
|             utils.setCacheHitOutput(isExactKeyMatch); | ||||
| 
 | ||||
|             core.info(`Cache restored from key: ${cacheKey}`); | ||||
|         } catch (error: unknown) { | ||||
|             const typedError = error as Error; | ||||
|             if (typedError.name === cache.ValidationError.name) { | ||||
|                 throw error; | ||||
|             } else { | ||||
|                 utils.logWarning(typedError.message); | ||||
|                 utils.setCacheHitOutput(false); | ||||
|             } | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         // Store the matched cache key
 | ||||
|         utils.setCacheState(cacheKey); | ||||
| 
 | ||||
|         const isExactKeyMatch = utils.isExactKeyMatch(primaryKey, cacheKey); | ||||
|         utils.setCacheHitOutput(isExactKeyMatch); | ||||
|         core.info(`Cache restored from key: ${cacheKey}`); | ||||
|     } catch (error: unknown) { | ||||
|         core.setFailed((error as Error).message); | ||||
|     } | ||||
|  |  | |||
							
								
								
									
										21
									
								
								src/save.ts
								
								
								
								
							
							
						
						
									
										21
									
								
								src/save.ts
								
								
								
								
							|  | @ -44,21 +44,14 @@ async function run(): Promise<void> { | |||
|             required: true | ||||
|         }); | ||||
| 
 | ||||
|         try { | ||||
|             await cache.saveCache(cachePaths, primaryKey, { | ||||
|                 uploadChunkSize: utils.getInputAsInt(Inputs.UploadChunkSize) | ||||
|             }); | ||||
|             core.info(`Cache saved with key: ${primaryKey}`); | ||||
|         } catch (error: unknown) { | ||||
|             const typedError = error as Error; | ||||
|             if (typedError.name === cache.ValidationError.name) { | ||||
|                 throw error; | ||||
|             } else if (typedError.name === cache.ReserveCacheError.name) { | ||||
|                 core.info(typedError.message); | ||||
|             } else { | ||||
|                 utils.logWarning(typedError.message); | ||||
|             } | ||||
|         const cacheId =  await cache.saveCache(cachePaths, primaryKey, { | ||||
|                                     uploadChunkSize: utils.getInputAsInt(Inputs.UploadChunkSize) | ||||
|                                 }); | ||||
|         if (cacheId == -1 ) { | ||||
|             return; | ||||
|         } | ||||
|         | ||||
|         core.info(`Cache saved with key: ${primaryKey}`); | ||||
|     } catch (error: unknown) { | ||||
|         utils.logWarning((error as Error).message); | ||||
|     } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Shubham Tiwari
						Shubham Tiwari