|
|
@ -1579,7 +1579,7 @@ function reserveCache(key) {
|
|
|
|
const reserveCacheRequest = {
|
|
|
|
const reserveCacheRequest = {
|
|
|
|
key
|
|
|
|
key
|
|
|
|
};
|
|
|
|
};
|
|
|
|
const response = yield restClient.create("caches", reserveCacheRequest);
|
|
|
|
const response = yield restClient.create("caches", reserveCacheRequest, getRequestOptions());
|
|
|
|
return _c = (_b = (_a = response) === null || _a === void 0 ? void 0 : _a.result) === null || _b === void 0 ? void 0 : _b.cacheId, (_c !== null && _c !== void 0 ? _c : -1);
|
|
|
|
return _c = (_b = (_a = response) === null || _a === void 0 ? void 0 : _a.result) === null || _b === void 0 ? void 0 : _b.cacheId, (_c !== null && _c !== void 0 ? _c : -1);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1600,6 +1600,7 @@ function bufferToStream(buffer) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
function uploadChunk(restClient, resourceUrl, data, offset) {
|
|
|
|
function uploadChunk(restClient, resourceUrl, data, offset) {
|
|
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
|
|
|
|
|
|
core.debug(`Uploading chunk of size ${data.byteLength} bytes at offset ${offset}`);
|
|
|
|
const requestOptions = getRequestOptions();
|
|
|
|
const requestOptions = getRequestOptions();
|
|
|
|
requestOptions.additionalHeaders = {
|
|
|
|
requestOptions.additionalHeaders = {
|
|
|
|
"Content-Type": "application/octet-stream",
|
|
|
|
"Content-Type": "application/octet-stream",
|
|
|
@ -1619,6 +1620,7 @@ function commitCache(restClient, cacheId, filesize) {
|
|
|
|
function saveCache(cacheId, archivePath) {
|
|
|
|
function saveCache(cacheId, archivePath) {
|
|
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
|
|
const restClient = createRestClient();
|
|
|
|
const restClient = createRestClient();
|
|
|
|
|
|
|
|
core.debug("Uploading chunks");
|
|
|
|
// Upload Chunks
|
|
|
|
// Upload Chunks
|
|
|
|
const stream = fs.createReadStream(archivePath);
|
|
|
|
const stream = fs.createReadStream(archivePath);
|
|
|
|
let streamIsClosed = false;
|
|
|
|
let streamIsClosed = false;
|
|
|
@ -1633,11 +1635,13 @@ function saveCache(cacheId, archivePath) {
|
|
|
|
uploads.push(uploadChunk(restClient, resourceUrl, chunk, offset));
|
|
|
|
uploads.push(uploadChunk(restClient, resourceUrl, chunk, offset));
|
|
|
|
offset += MAX_CHUNK_SIZE;
|
|
|
|
offset += MAX_CHUNK_SIZE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
core.debug("Awaiting all uplaods");
|
|
|
|
const responses = yield Promise.all(uploads);
|
|
|
|
const responses = yield Promise.all(uploads);
|
|
|
|
const failedResponse = responses.find(x => !isSuccessStatusCode(x.statusCode));
|
|
|
|
const failedResponse = responses.find(x => !isSuccessStatusCode(x.statusCode));
|
|
|
|
if (failedResponse) {
|
|
|
|
if (failedResponse) {
|
|
|
|
throw new Error(`Cache service responded with ${failedResponse.statusCode} during chunk upload.`);
|
|
|
|
throw new Error(`Cache service responded with ${failedResponse.statusCode} during chunk upload.`);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
core.debug("Commiting cache");
|
|
|
|
// Commit Cache
|
|
|
|
// Commit Cache
|
|
|
|
const cacheSize = utils.getArchiveFileSize(archivePath);
|
|
|
|
const cacheSize = utils.getArchiveFileSize(archivePath);
|
|
|
|
const commitCacheResponse = yield commitCache(restClient, cacheId, cacheSize);
|
|
|
|
const commitCacheResponse = yield commitCache(restClient, cacheId, cacheSize);
|
|
|
@ -2968,11 +2972,13 @@ function run() {
|
|
|
|
core.info(`Cache hit occurred on the primary key ${primaryKey}, not saving cache.`);
|
|
|
|
core.info(`Cache hit occurred on the primary key ${primaryKey}, not saving cache.`);
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
core.debug("Reserving Cache");
|
|
|
|
const cacheId = yield cacheHttpClient.reserveCache(primaryKey);
|
|
|
|
const cacheId = yield cacheHttpClient.reserveCache(primaryKey);
|
|
|
|
if (cacheId < 0) {
|
|
|
|
if (cacheId < 0) {
|
|
|
|
core.info(`Unable to reserve cache with key ${primaryKey}, another job may be creating this cache.`);
|
|
|
|
core.info(`Unable to reserve cache with key ${primaryKey}, another job may be creating this cache.`);
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
core.debug(`Cache ID: ${cacheId}`);
|
|
|
|
const cachePath = utils.resolvePath(core.getInput(constants_1.Inputs.Path, { required: true }));
|
|
|
|
const cachePath = utils.resolvePath(core.getInput(constants_1.Inputs.Path, { required: true }));
|
|
|
|
core.debug(`Cache Path: ${cachePath}`);
|
|
|
|
core.debug(`Cache Path: ${cachePath}`);
|
|
|
|
const archivePath = path.join(yield utils.createTempDirectory(), "cache.tgz");
|
|
|
|
const archivePath = path.join(yield utils.createTempDirectory(), "cache.tgz");
|
|
|
@ -3001,6 +3007,7 @@ function run() {
|
|
|
|
utils.logWarning(`Cache size of ~${Math.round(archiveFileSize / (1024 * 1024 * 1024))} GB (${archiveFileSize} B) is over the 2GB limit, not saving cache.`);
|
|
|
|
utils.logWarning(`Cache size of ~${Math.round(archiveFileSize / (1024 * 1024 * 1024))} GB (${archiveFileSize} B) is over the 2GB limit, not saving cache.`);
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
core.debug("Saving Cache");
|
|
|
|
yield cacheHttpClient.saveCache(cacheId, archivePath);
|
|
|
|
yield cacheHttpClient.saveCache(cacheId, archivePath);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (error) {
|
|
|
|
catch (error) {
|
|
|
|