Fix "large package handling" to redirect to shared folder (#473)
This commit is contained in:
158
dist/index.js
generated
vendored
158
dist/index.js
generated
vendored
@@ -744,7 +744,7 @@ class CloudRunnerOptions {
|
||||
return;
|
||||
}
|
||||
static get cloudRunnerBranch() {
|
||||
return CloudRunnerOptions.getInput('cloudRunnerBranch') || 'cloud-runner-develop';
|
||||
return CloudRunnerOptions.getInput('cloudRunnerBranch') || 'main';
|
||||
}
|
||||
static get cloudRunnerCluster() {
|
||||
if (cli_1.Cli.isCliMode) {
|
||||
@@ -840,17 +840,16 @@ class CloudRunnerOptions {
|
||||
return CloudRunnerOptions.getInput(`cloudRunnerDebugEnv`) || false;
|
||||
}
|
||||
static get watchCloudRunnerToEnd() {
|
||||
const input = CloudRunnerOptions.getInput(`watchToEnd`);
|
||||
return input !== 'false';
|
||||
return (CloudRunnerOptions.getInput(`watchToEnd`) || true) !== 'false';
|
||||
}
|
||||
static get useSharedLargePackages() {
|
||||
return CloudRunnerOptions.getInput(`useSharedLargePackages`) || false;
|
||||
return (CloudRunnerOptions.getInput(`useSharedLargePackages`) || 'false') !== 'false';
|
||||
}
|
||||
static get useSharedBuilder() {
|
||||
return CloudRunnerOptions.getInput(`useSharedBuilder`) || true;
|
||||
return (CloudRunnerOptions.getInput(`useSharedBuilder`) || true) !== 'false';
|
||||
}
|
||||
static get useLz4Compression() {
|
||||
return CloudRunnerOptions.getInput(`useLz4Compression`) || true;
|
||||
return (CloudRunnerOptions.getInput(`useLz4Compression`) || true) !== false;
|
||||
}
|
||||
// ### ### ###
|
||||
// Retained Workspace
|
||||
@@ -2348,7 +2347,6 @@ const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855));
|
||||
const aws_job_stack_1 = __nccwpck_require__(70633);
|
||||
const aws_base_stack_1 = __nccwpck_require__(26112);
|
||||
const __1 = __nccwpck_require__(41359);
|
||||
const tertiary_resources_service_1 = __nccwpck_require__(61627);
|
||||
const garbage_collection_service_1 = __nccwpck_require__(53859);
|
||||
const task_service_1 = __nccwpck_require__(67205);
|
||||
class AWSBuildEnvironment {
|
||||
@@ -2357,10 +2355,9 @@ class AWSBuildEnvironment {
|
||||
}
|
||||
listResources() {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
yield task_service_1.TaskService.awsListJobs();
|
||||
yield tertiary_resources_service_1.TertiaryResourcesService.awsListLogGroups();
|
||||
yield task_service_1.TaskService.awsListTasks();
|
||||
yield task_service_1.TaskService.awsListStacks();
|
||||
yield task_service_1.TaskService.getCloudFormationJobStacks();
|
||||
yield task_service_1.TaskService.getLogGroups();
|
||||
yield task_service_1.TaskService.getTasks();
|
||||
return [];
|
||||
});
|
||||
}
|
||||
@@ -2374,7 +2371,7 @@ class AWSBuildEnvironment {
|
||||
}
|
||||
listOtherResources() {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
yield tertiary_resources_service_1.TertiaryResourcesService.awsListLogGroups();
|
||||
yield task_service_1.TaskService.getLogGroups();
|
||||
return '';
|
||||
});
|
||||
}
|
||||
@@ -2488,29 +2485,30 @@ const aws_sdk_1 = __importDefault(__nccwpck_require__(71786));
|
||||
const input_1 = __importDefault(__nccwpck_require__(91933));
|
||||
const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855));
|
||||
const task_service_1 = __nccwpck_require__(67205);
|
||||
const tertiary_resources_service_1 = __nccwpck_require__(61627);
|
||||
class GarbageCollectionService {
|
||||
static isOlderThan1day(date) {
|
||||
const ageDate = new Date(date.getTime() - Date.now());
|
||||
return ageDate.getDay() > 0;
|
||||
}
|
||||
static cleanup(deleteResources = false, OneDayOlderOnly = false) {
|
||||
var _a, _b;
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
process.env.AWS_REGION = input_1.default.region;
|
||||
const CF = new aws_sdk_1.default.CloudFormation();
|
||||
const ecs = new aws_sdk_1.default.ECS();
|
||||
const cwl = new aws_sdk_1.default.CloudWatchLogs();
|
||||
const taskDefinitionsInUse = new Array();
|
||||
yield task_service_1.TaskService.awsListTasks((taskElement, element) => __awaiter(this, void 0, void 0, function* () {
|
||||
var _a;
|
||||
const tasks = yield task_service_1.TaskService.getTasks();
|
||||
for (const task of tasks) {
|
||||
const { taskElement, element } = task;
|
||||
taskDefinitionsInUse.push(taskElement.taskDefinitionArn);
|
||||
if (deleteResources && (!OneDayOlderOnly || GarbageCollectionService.isOlderThan1day(taskElement.CreatedAt))) {
|
||||
cloud_runner_logger_1.default.log(`Stopping task ${(_a = taskElement.containers) === null || _a === void 0 ? void 0 : _a[0].name}`);
|
||||
yield ecs.stopTask({ task: taskElement.taskArn || '', cluster: element }).promise();
|
||||
}
|
||||
}));
|
||||
yield task_service_1.TaskService.awsListStacks((element) => __awaiter(this, void 0, void 0, function* () {
|
||||
var _b;
|
||||
}
|
||||
const jobStacks = yield task_service_1.TaskService.getCloudFormationJobStacks();
|
||||
for (const element of jobStacks) {
|
||||
if ((_b = (yield CF.describeStackResources({ StackName: element.StackName }).promise()).StackResources) === null || _b === void 0 ? void 0 : _b.some((x) => x.ResourceType === 'AWS::ECS::TaskDefinition' && taskDefinitionsInUse.includes(x.PhysicalResourceId))) {
|
||||
cloud_runner_logger_1.default.log(`Skipping ${element.StackName} - active task was running not deleting`);
|
||||
return;
|
||||
@@ -2524,14 +2522,19 @@ class GarbageCollectionService {
|
||||
const deleteStackInput = { StackName: element.StackName };
|
||||
yield CF.deleteStack(deleteStackInput).promise();
|
||||
}
|
||||
}));
|
||||
yield tertiary_resources_service_1.TertiaryResourcesService.awsListLogGroups((element) => __awaiter(this, void 0, void 0, function* () {
|
||||
}
|
||||
const logGroups = yield task_service_1.TaskService.getLogGroups();
|
||||
for (const element of logGroups) {
|
||||
if (deleteResources &&
|
||||
(!OneDayOlderOnly || GarbageCollectionService.isOlderThan1day(new Date(element.createdAt)))) {
|
||||
cloud_runner_logger_1.default.log(`Deleting ${element.logGroupName}`);
|
||||
yield cwl.deleteLogGroup({ logGroupName: element.logGroupName || '' }).promise();
|
||||
}
|
||||
}));
|
||||
}
|
||||
const locks = yield task_service_1.TaskService.getLocks();
|
||||
for (const element of locks) {
|
||||
cloud_runner_logger_1.default.log(`Lock: ${element.Key}`);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -2572,40 +2575,43 @@ class TaskService {
|
||||
return output;
|
||||
});
|
||||
}
|
||||
static awsListStacks(perResultCallback = false) {
|
||||
static getCloudFormationJobStacks() {
|
||||
var _a, _b;
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
cloud_runner_logger_1.default.log(`List Stacks`);
|
||||
const result = [];
|
||||
cloud_runner_logger_1.default.log(``);
|
||||
cloud_runner_logger_1.default.log(`List Cloud Formation Stacks`);
|
||||
process.env.AWS_REGION = input_1.default.region;
|
||||
const CF = new aws_sdk_1.default.CloudFormation();
|
||||
const stacks = ((_a = (yield CF.listStacks().promise()).StackSummaries) === null || _a === void 0 ? void 0 : _a.filter((_x) => _x.StackStatus !== 'DELETE_COMPLETE')) || [];
|
||||
cloud_runner_logger_1.default.log(`Stacks ${stacks.length}`);
|
||||
const stacks = ((_a = (yield CF.listStacks().promise()).StackSummaries) === null || _a === void 0 ? void 0 : _a.filter((_x) => _x.StackStatus !== 'DELETE_COMPLETE' && _x.TemplateDescription !== base_stack_formation_1.BaseStackFormation.baseStackDecription)) || [];
|
||||
cloud_runner_logger_1.default.log(``);
|
||||
cloud_runner_logger_1.default.log(`Cloud Formation Stacks ${stacks.length}`);
|
||||
for (const element of stacks) {
|
||||
const ageDate = new Date(Date.now() - element.CreationTime.getTime());
|
||||
cloud_runner_logger_1.default.log(`Task Stack ${element.StackName} - Age D${Math.floor(ageDate.getHours() / 24)} H${ageDate.getHours()} M${ageDate.getMinutes()}`);
|
||||
if (perResultCallback)
|
||||
yield perResultCallback(element);
|
||||
result.push(element);
|
||||
}
|
||||
const baseStacks = ((_b = (yield CF.listStacks().promise()).StackSummaries) === null || _b === void 0 ? void 0 : _b.filter((_x) => _x.StackStatus !== 'DELETE_COMPLETE' && _x.TemplateDescription === base_stack_formation_1.BaseStackFormation.baseStackDecription)) || [];
|
||||
cloud_runner_logger_1.default.log(``);
|
||||
cloud_runner_logger_1.default.log(`Base Stacks ${baseStacks.length}`);
|
||||
for (const element of baseStacks) {
|
||||
const ageDate = new Date(Date.now() - element.CreationTime.getTime());
|
||||
cloud_runner_logger_1.default.log(`Task Stack ${element.StackName} - Age D${Math.floor(ageDate.getHours() / 24)} H${ageDate.getHours()} M${ageDate.getMinutes()}`);
|
||||
if (perResultCallback)
|
||||
yield perResultCallback(element);
|
||||
}
|
||||
if (stacks === undefined) {
|
||||
return;
|
||||
result.push(element);
|
||||
}
|
||||
cloud_runner_logger_1.default.log(``);
|
||||
return result;
|
||||
});
|
||||
}
|
||||
static awsListTasks(perResultCallback = false) {
|
||||
static getTasks() {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const result = [];
|
||||
cloud_runner_logger_1.default.log(``);
|
||||
cloud_runner_logger_1.default.log(`List Tasks`);
|
||||
process.env.AWS_REGION = input_1.default.region;
|
||||
const ecs = new aws_sdk_1.default.ECS();
|
||||
const clusters = (yield ecs.listClusters().promise()).clusterArns || [];
|
||||
cloud_runner_logger_1.default.log(`Clusters ${clusters.length}`);
|
||||
cloud_runner_logger_1.default.log(`Task Clusters ${clusters.length}`);
|
||||
for (const element of clusters) {
|
||||
const input = {
|
||||
cluster: element,
|
||||
@@ -2615,6 +2621,7 @@ class TaskService {
|
||||
const describeInput = { tasks: list, cluster: element };
|
||||
const describeList = (yield ecs.describeTasks(describeInput).promise()).tasks || [];
|
||||
if (describeList.length === 0) {
|
||||
cloud_runner_logger_1.default.log(`No Tasks`);
|
||||
continue;
|
||||
}
|
||||
cloud_runner_logger_1.default.log(`Tasks ${describeList.length}`);
|
||||
@@ -2628,27 +2635,12 @@ class TaskService {
|
||||
cloud_runner_logger_1.default.log(`Skipping ${taskElement.taskDefinitionArn} no createdAt date`);
|
||||
continue;
|
||||
}
|
||||
if (perResultCallback)
|
||||
yield perResultCallback(taskElement, element);
|
||||
result.push({ taskElement, element });
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
static awsListJobs(perResultCallback = false) {
|
||||
var _a;
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
cloud_runner_logger_1.default.log(`List Jobs`);
|
||||
process.env.AWS_REGION = input_1.default.region;
|
||||
const CF = new aws_sdk_1.default.CloudFormation();
|
||||
const stacks = ((_a = (yield CF.listStacks().promise()).StackSummaries) === null || _a === void 0 ? void 0 : _a.filter((_x) => _x.StackStatus !== 'DELETE_COMPLETE' && _x.TemplateDescription !== base_stack_formation_1.BaseStackFormation.baseStackDecription)) || [];
|
||||
cloud_runner_logger_1.default.log(`Stacks ${stacks.length}`);
|
||||
for (const element of stacks) {
|
||||
const ageDate = new Date(Date.now() - element.CreationTime.getTime());
|
||||
cloud_runner_logger_1.default.log(`Task Stack ${element.StackName} - Age D${Math.floor(ageDate.getHours() / 24)} H${ageDate.getHours()} M${ageDate.getMinutes()}`);
|
||||
if (perResultCallback)
|
||||
yield perResultCallback(element);
|
||||
}
|
||||
cloud_runner_logger_1.default.log(``);
|
||||
return result;
|
||||
});
|
||||
}
|
||||
static awsDescribeJob(job) {
|
||||
@@ -2674,37 +2666,9 @@ class TaskService {
|
||||
return message;
|
||||
});
|
||||
}
|
||||
}
|
||||
exports.TaskService = TaskService;
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ 61627:
|
||||
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
|
||||
|
||||
"use strict";
|
||||
|
||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
};
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||
exports.TertiaryResourcesService = void 0;
|
||||
const aws_sdk_1 = __importDefault(__nccwpck_require__(71786));
|
||||
const input_1 = __importDefault(__nccwpck_require__(91933));
|
||||
const cloud_runner_logger_1 = __importDefault(__nccwpck_require__(22855));
|
||||
class TertiaryResourcesService {
|
||||
static awsListLogGroups(perResultCallback = false) {
|
||||
static getLogGroups() {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const result = [];
|
||||
process.env.AWS_REGION = input_1.default.region;
|
||||
const ecs = new aws_sdk_1.default.CloudWatchLogs();
|
||||
let logStreamInput = {
|
||||
@@ -2725,13 +2689,24 @@ class TertiaryResourcesService {
|
||||
}
|
||||
const ageDate = new Date(Date.now() - element.creationTime);
|
||||
cloud_runner_logger_1.default.log(`Task Stack ${element.logGroupName} - Age D${Math.floor(ageDate.getHours() / 24)} H${ageDate.getHours()} M${ageDate.getMinutes()}`);
|
||||
if (perResultCallback)
|
||||
yield perResultCallback(element, element);
|
||||
result.push(element);
|
||||
}
|
||||
return result;
|
||||
});
|
||||
}
|
||||
static getLocks() {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
process.env.AWS_REGION = input_1.default.region;
|
||||
const s3 = new aws_sdk_1.default.S3();
|
||||
const listRequest = {
|
||||
Bucket: `game-ci-test-storage`,
|
||||
};
|
||||
const results = yield s3.listObjects(listRequest).promise();
|
||||
return results.Contents || [];
|
||||
});
|
||||
}
|
||||
}
|
||||
exports.TertiaryResourcesService = TertiaryResourcesService;
|
||||
exports.TaskService = TaskService;
|
||||
|
||||
|
||||
/***/ }),
|
||||
@@ -4195,12 +4170,15 @@ class RemoteClient {
|
||||
});
|
||||
}
|
||||
static replaceLargePackageReferencesWithSharedReferences() {
|
||||
const manifest = fs_1.default.readFileSync(path_1.default.join(cloud_runner_folders_1.CloudRunnerFolders.projectPathAbsolute, `Packages/manifest.json`), 'utf8');
|
||||
if (cloud_runner_1.default.buildParameters.cloudRunnerDebug) {
|
||||
cloud_runner_logger_1.default.log(manifest);
|
||||
}
|
||||
if (cloud_runner_1.default.buildParameters.useSharedLargePackages) {
|
||||
manifest.replace(/LargePackages/g, '../../LargePackages');
|
||||
const filePath = path_1.default.join(cloud_runner_folders_1.CloudRunnerFolders.projectPathAbsolute, `Packages/manifest.json`);
|
||||
let manifest = fs_1.default.readFileSync(filePath, 'utf8');
|
||||
manifest = manifest.replace(/LargeContent/g, '../../LargeContent');
|
||||
fs_1.default.writeFileSync(filePath, manifest);
|
||||
if (cloud_runner_1.default.buildParameters.cloudRunnerDebug) {
|
||||
cloud_runner_logger_1.default.log(`Package Manifest`);
|
||||
cloud_runner_logger_1.default.log(manifest);
|
||||
}
|
||||
}
|
||||
}
|
||||
static pullLatestLFS() {
|
||||
|
||||
Reference in New Issue
Block a user