diff --git a/node_modules/@actions/cache/lib/cache.d.ts b/node_modules/@actions/cache/lib/cache.d.ts index 16b20f7..aea77ba 100644 --- a/node_modules/@actions/cache/lib/cache.d.ts +++ b/node_modules/@actions/cache/lib/cache.d.ts @@ -20,7 +20,7 @@ export declare function isFeatureAvailable(): boolean; * @param downloadOptions cache download options * @returns string returns the key for the cache hit, otherwise returns undefined */ -export declare function restoreCache(paths: string[], primaryKey: string, restoreKeys?: string[], options?: DownloadOptions): Promise; +export declare function restoreCache(paths: string[], primaryKey: string, restoreKeys?: string[], options?: DownloadOptions): Promise; /** * Saves a list of files with the specified key * @@ -29,4 +29,12 @@ export declare function restoreCache(paths: string[], primaryKey: string, restor * @param options cache upload options * @returns number returns cacheId if the cache was saved successfully and throws an error if save fails */ -export declare function saveCache(paths: string[], key: string, options?: UploadOptions): Promise; +export declare function saveCache(paths: string[], key: string, options?: UploadOptions): Promise; + +// PATCHED: Add `CacheEntry` as return type for save/restore functions +// This allows us to track and report on cache entry sizes. +export declare class CacheEntry { + key: string; + size?: number; + constructor(key: string, size?: number); +} diff --git a/node_modules/@actions/cache/lib/cache.js b/node_modules/@actions/cache/lib/cache.js index 4dc5e88..92d99d5 100644 --- a/node_modules/@actions/cache/lib/cache.js +++ b/node_modules/@actions/cache/lib/cache.js @@ -95,26 +95,18 @@ function restoreCache(paths, primaryKey, restoreKeys, options) { } archivePath = path.join(yield utils.createTempDirectory(), utils.getCacheFileName(compressionMethod)); core.debug(`Archive Path: ${archivePath}`); + const restoredEntry = new CacheEntry(cacheEntry.cacheKey); // Download the cache from the cache entry yield cacheHttpClient.downloadCache(cacheEntry.archiveLocation, archivePath, options); if (core.isDebug()) { yield tar_1.listTar(archivePath, compressionMethod); } const archiveFileSize = utils.getArchiveFileSizeInBytes(archivePath); + restoredEntry.size = archiveFileSize; 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}`); - } + return restoredEntry; } finally { // Try to delete the archive to save space @@ -153,6 +145,7 @@ function saveCache(paths, key, options) { const archiveFolder = yield utils.createTempDirectory(); const archivePath = path.join(archiveFolder, utils.getCacheFileName(compressionMethod)); core.debug(`Archive Path: ${archivePath}`); + const savedEntry = new CacheEntry(key); try { yield tar_1.createTar(archiveFolder, cachePaths, compressionMethod); if (core.isDebug()) { @@ -160,6 +153,7 @@ function saveCache(paths, key, options) { } const fileSizeLimit = 10 * 1024 * 1024 * 1024; // 10GB per repo limit const archiveFileSize = utils.getArchiveFileSizeInBytes(archivePath); + savedEntry.size = archiveFileSize; core.debug(`File Size: ${archiveFileSize}`); // For GHES, this check will take place in ReserveCache API with enterprise file size limit if (archiveFileSize > fileSizeLimit && !utils.isGhes()) { @@ -182,18 +176,6 @@ 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 { @@ -203,8 +185,15 @@ function saveCache(paths, key, options) { core.debug(`Failed to delete archive: ${error}`); } } - return cacheId; + return savedEntry; }); } exports.saveCache = saveCache; +class CacheEntry { + constructor(key, size) { + this.key = key; + this.size = size; + } +} +exports.CacheEntry = CacheEntry; //# sourceMappingURL=cache.js.map \ No newline at end of file