|
|
|
@ -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);
|
|
|
|
|