Serialize all input and buildparams

pull/310/head
Frostebite 2021-12-20 23:08:22 +00:00
parent cc8895d935
commit 568b5b216b
7 changed files with 153 additions and 154 deletions

274
dist/index.js vendored
View File

@ -482,129 +482,6 @@ class AWSBaseStack {
exports.AWSBaseStack = AWSBaseStack; exports.AWSBaseStack = AWSBaseStack;
/***/ }),
/***/ 81683:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
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 }));
const SDK = __importStar(__webpack_require__(71786));
const aws_build_runner_1 = __importDefault(__webpack_require__(29102));
const cloud_runner_logger_1 = __importDefault(__webpack_require__(22855));
const aws_job_stack_1 = __webpack_require__(85819);
const aws_base_stack_1 = __webpack_require__(28730);
const __1 = __webpack_require__(41359);
class AWSBuildEnvironment {
constructor(buildParameters) {
this.baseStackName = buildParameters.awsBaseStackName;
}
cleanupSharedBuildResources(
// eslint-disable-next-line no-unused-vars
buildGuid,
// eslint-disable-next-line no-unused-vars
buildParameters,
// eslint-disable-next-line no-unused-vars
branchName,
// eslint-disable-next-line no-unused-vars
defaultSecretsArray) {
return __awaiter(this, void 0, void 0, function* () { });
}
setupSharedBuildResources(
// eslint-disable-next-line no-unused-vars
buildGuid,
// eslint-disable-next-line no-unused-vars
buildParameters,
// eslint-disable-next-line no-unused-vars
branchName,
// eslint-disable-next-line no-unused-vars
defaultSecretsArray) {
return __awaiter(this, void 0, void 0, function* () { });
}
runBuildTask(buildId, image, commands, mountdir, workingdir, environment, secrets) {
return __awaiter(this, void 0, void 0, function* () {
process.env.AWS_REGION = __1.Input.region;
const ECS = new SDK.ECS();
const CF = new SDK.CloudFormation();
cloud_runner_logger_1.default.log(`AWS Region: ${CF.config.region}`);
const entrypoint = ['/bin/sh'];
const t0 = Date.now();
yield new aws_base_stack_1.AWSBaseStack(this.baseStackName).setupBaseStack(CF);
const taskDef = yield new aws_job_stack_1.AWSJobStack(this.baseStackName).setupCloudFormations(CF, buildId, image, entrypoint, commands, mountdir, workingdir, secrets);
let t2;
try {
const t1 = Date.now();
cloud_runner_logger_1.default.log(`Setup job time: ${Math.floor((t1 - t0) / 1000)}s`);
yield aws_build_runner_1.default.runTask(taskDef, ECS, CF, environment, buildId, commands);
t2 = Date.now();
cloud_runner_logger_1.default.log(`Run job time: ${Math.floor((t2 - t1) / 1000)}s`);
}
finally {
yield this.cleanupResources(CF, taskDef);
const t3 = Date.now();
if (t2 !== undefined)
cloud_runner_logger_1.default.log(`Cleanup job time: ${Math.floor((t3 - t2) / 1000)}s`);
}
});
}
cleanupResources(CF, taskDef) {
var _a;
return __awaiter(this, void 0, void 0, function* () {
cloud_runner_logger_1.default.log('Cleanup starting');
yield CF.deleteStack({
StackName: taskDef.taskDefStackName,
}).promise();
yield CF.deleteStack({
StackName: taskDef.taskDefStackNameTTL,
}).promise();
yield CF.waitFor('stackDeleteComplete', {
StackName: taskDef.taskDefStackName,
}).promise();
yield CF.waitFor('stackDeleteComplete', {
StackName: taskDef.taskDefStackNameTTL,
}).promise();
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(`Deleted Stacks: ${taskDef.taskDefStackName}, ${taskDef.taskDefStackNameTTL}`);
cloud_runner_logger_1.default.log(`Stacks: ${JSON.stringify(stacks, undefined, 4)}`);
cloud_runner_logger_1.default.log('Cleanup complete');
});
}
}
exports.default = AWSBuildEnvironment;
/***/ }), /***/ }),
/***/ 29102: /***/ 29102:
@ -859,17 +736,17 @@ exports.AWSError = void 0;
const cloud_runner_logger_1 = __importDefault(__webpack_require__(22855)); const cloud_runner_logger_1 = __importDefault(__webpack_require__(22855));
const core = __importStar(__webpack_require__(42186)); const core = __importStar(__webpack_require__(42186));
class AWSError { class AWSError {
static handleStackCreationFailure(error, CF, taskDefStackName, taskDefCloudFormation, parameters, secrets) { static handleStackCreationFailure(error, CF, taskDefStackName) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
cloud_runner_logger_1.default.log(' \n '); cloud_runner_logger_1.default.log(' \n ');
cloud_runner_logger_1.default.log('aws stack parameters: '); //CloudRunnerLogger.log('aws stack parameters: ');
cloud_runner_logger_1.default.log(JSON.stringify(parameters, undefined, 4)); //CloudRunnerLogger.log(JSON.stringify(parameters, undefined, 4));
cloud_runner_logger_1.default.log('aws stack secrets: '); //CloudRunnerLogger.log('aws stack secrets: ');
cloud_runner_logger_1.default.log(JSON.stringify(secrets, undefined, 4)); //CloudRunnerLogger.log(JSON.stringify(secrets, undefined, 4));
cloud_runner_logger_1.default.log('aws stack: '); //CloudRunnerLogger.log('aws stack: ');
cloud_runner_logger_1.default.log(taskDefCloudFormation); //CloudRunnerLogger.log(taskDefCloudFormation);
cloud_runner_logger_1.default.log('aws error: '); cloud_runner_logger_1.default.log('aws error: ');
core.error(error); core.error(JSON.stringify(error, undefined, 4));
cloud_runner_logger_1.default.log('Getting events and resources for task stack'); cloud_runner_logger_1.default.log('Getting events and resources for task stack');
const events = (yield CF.describeStackEvents({ StackName: taskDefStackName }).promise()).StackEvents; const events = (yield CF.describeStackEvents({ StackName: taskDefStackName }).promise()).StackEvents;
const resources = (yield CF.describeStackResources({ StackName: taskDefStackName }).promise()).StackResources; const resources = (yield CF.describeStackResources({ StackName: taskDefStackName }).promise()).StackResources;
@ -1044,7 +921,7 @@ class AWSJobStack {
yield CF.waitFor('stackCreateComplete', { StackName: taskDefStackName }).promise(); yield CF.waitFor('stackCreateComplete', { StackName: taskDefStackName }).promise();
} }
catch (error) { catch (error) {
yield aws_error_1.AWSError.handleStackCreationFailure(error, CF, taskDefStackName, taskDefCloudFormation, parameters, secrets); yield aws_error_1.AWSError.handleStackCreationFailure(error, CF, taskDefStackName);
throw error; throw error;
} }
const taskDefResources = (yield CF.describeStackResources({ const taskDefResources = (yield CF.describeStackResources({
@ -1131,6 +1008,129 @@ class AWSTemplates {
exports.AWSTemplates = AWSTemplates; exports.AWSTemplates = AWSTemplates;
/***/ }),
/***/ 37569:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
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 }));
const SDK = __importStar(__webpack_require__(71786));
const aws_build_runner_1 = __importDefault(__webpack_require__(29102));
const cloud_runner_logger_1 = __importDefault(__webpack_require__(22855));
const aws_job_stack_1 = __webpack_require__(85819);
const aws_base_stack_1 = __webpack_require__(28730);
const __1 = __webpack_require__(41359);
class AWSBuildEnvironment {
constructor(buildParameters) {
this.baseStackName = buildParameters.awsBaseStackName;
}
cleanupSharedBuildResources(
// eslint-disable-next-line no-unused-vars
buildGuid,
// eslint-disable-next-line no-unused-vars
buildParameters,
// eslint-disable-next-line no-unused-vars
branchName,
// eslint-disable-next-line no-unused-vars
defaultSecretsArray) {
return __awaiter(this, void 0, void 0, function* () { });
}
setupSharedBuildResources(
// eslint-disable-next-line no-unused-vars
buildGuid,
// eslint-disable-next-line no-unused-vars
buildParameters,
// eslint-disable-next-line no-unused-vars
branchName,
// eslint-disable-next-line no-unused-vars
defaultSecretsArray) {
return __awaiter(this, void 0, void 0, function* () { });
}
runBuildTask(buildId, image, commands, mountdir, workingdir, environment, secrets) {
return __awaiter(this, void 0, void 0, function* () {
process.env.AWS_REGION = __1.Input.region;
const ECS = new SDK.ECS();
const CF = new SDK.CloudFormation();
cloud_runner_logger_1.default.log(`AWS Region: ${CF.config.region}`);
const entrypoint = ['/bin/sh'];
const t0 = Date.now();
yield new aws_base_stack_1.AWSBaseStack(this.baseStackName).setupBaseStack(CF);
const taskDef = yield new aws_job_stack_1.AWSJobStack(this.baseStackName).setupCloudFormations(CF, buildId, image, entrypoint, commands, mountdir, workingdir, secrets);
let t2;
try {
const t1 = Date.now();
cloud_runner_logger_1.default.log(`Setup job time: ${Math.floor((t1 - t0) / 1000)}s`);
yield aws_build_runner_1.default.runTask(taskDef, ECS, CF, environment, buildId, commands);
t2 = Date.now();
cloud_runner_logger_1.default.log(`Run job time: ${Math.floor((t2 - t1) / 1000)}s`);
}
finally {
yield this.cleanupResources(CF, taskDef);
const t3 = Date.now();
if (t2 !== undefined)
cloud_runner_logger_1.default.log(`Cleanup job time: ${Math.floor((t3 - t2) / 1000)}s`);
}
});
}
cleanupResources(CF, taskDef) {
var _a;
return __awaiter(this, void 0, void 0, function* () {
cloud_runner_logger_1.default.log('Cleanup starting');
yield CF.deleteStack({
StackName: taskDef.taskDefStackName,
}).promise();
yield CF.deleteStack({
StackName: taskDef.taskDefStackNameTTL,
}).promise();
yield CF.waitFor('stackDeleteComplete', {
StackName: taskDef.taskDefStackName,
}).promise();
yield CF.waitFor('stackDeleteComplete', {
StackName: taskDef.taskDefStackNameTTL,
}).promise();
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(`Deleted Stacks: ${taskDef.taskDefStackName}, ${taskDef.taskDefStackNameTTL}`);
cloud_runner_logger_1.default.log(`Stacks: ${JSON.stringify(stacks, undefined, 4)}`);
cloud_runner_logger_1.default.log('Cleanup complete');
});
}
}
exports.default = AWSBuildEnvironment;
/***/ }), /***/ }),
/***/ 79144: /***/ 79144:
@ -1151,9 +1151,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", ({ value: true })); Object.defineProperty(exports, "__esModule", ({ value: true }));
const aws_build_platform_1 = __importDefault(__webpack_require__(81683)); const aws_1 = __importDefault(__webpack_require__(37569));
const cloud_runner_state_1 = __webpack_require__(70912); const cloud_runner_state_1 = __webpack_require__(70912);
const kubernetes_build_platform_1 = __importDefault(__webpack_require__(10471)); const k8s_1 = __importDefault(__webpack_require__(25107));
const cloud_runner_logger_1 = __importDefault(__webpack_require__(22855)); const cloud_runner_logger_1 = __importDefault(__webpack_require__(22855));
const cloud_runner_step_state_1 = __webpack_require__(64854); const cloud_runner_step_state_1 = __webpack_require__(64854);
const workflow_composition_root_1 = __webpack_require__(54204); const workflow_composition_root_1 = __webpack_require__(54204);
@ -1168,12 +1168,12 @@ class CloudRunner {
switch (cloud_runner_state_1.CloudRunnerState.buildParams.cloudRunnerCluster) { switch (cloud_runner_state_1.CloudRunnerState.buildParams.cloudRunnerCluster) {
case 'k8s': case 'k8s':
cloud_runner_logger_1.default.log('Building with Kubernetes'); cloud_runner_logger_1.default.log('Building with Kubernetes');
cloud_runner_state_1.CloudRunnerState.CloudRunnerProviderPlatform = new kubernetes_build_platform_1.default(cloud_runner_state_1.CloudRunnerState.buildParams); cloud_runner_state_1.CloudRunnerState.CloudRunnerProviderPlatform = new k8s_1.default(cloud_runner_state_1.CloudRunnerState.buildParams);
break; break;
default: default:
case 'aws': case 'aws':
cloud_runner_logger_1.default.log('Building with AWS'); cloud_runner_logger_1.default.log('Building with AWS');
cloud_runner_state_1.CloudRunnerState.CloudRunnerProviderPlatform = new aws_build_platform_1.default(cloud_runner_state_1.CloudRunnerState.buildParams); cloud_runner_state_1.CloudRunnerState.CloudRunnerProviderPlatform = new aws_1.default(cloud_runner_state_1.CloudRunnerState.buildParams);
break; break;
} }
} }
@ -1252,7 +1252,7 @@ exports.CloudRunnerError = CloudRunnerError;
/***/ }), /***/ }),
/***/ 10471: /***/ 25107:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) { /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict"; "use strict";

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,4 @@
import CloudRunnerLogger from '../services/cloud-runner-logger'; import CloudRunnerLogger from '../services/cloud-runner-logger';
import CloudRunnerSecret from '../services/cloud-runner-secret';
import * as SDK from 'aws-sdk'; import * as SDK from 'aws-sdk';
import * as core from '@actions/core'; import * as core from '@actions/core';
@ -8,22 +7,22 @@ export class AWSError {
error: any, error: any,
CF: SDK.CloudFormation, CF: SDK.CloudFormation,
taskDefStackName: string, taskDefStackName: string,
taskDefCloudFormation: string, //taskDefCloudFormation: string,
parameters: any[], //parameters: any[],
secrets: CloudRunnerSecret[], //secrets: CloudRunnerSecret[],
) { ) {
CloudRunnerLogger.log(' \n '); CloudRunnerLogger.log(' \n ');
CloudRunnerLogger.log('aws stack parameters: '); //CloudRunnerLogger.log('aws stack parameters: ');
CloudRunnerLogger.log(JSON.stringify(parameters, undefined, 4)); //CloudRunnerLogger.log(JSON.stringify(parameters, undefined, 4));
CloudRunnerLogger.log('aws stack secrets: '); //CloudRunnerLogger.log('aws stack secrets: ');
CloudRunnerLogger.log(JSON.stringify(secrets, undefined, 4)); //CloudRunnerLogger.log(JSON.stringify(secrets, undefined, 4));
CloudRunnerLogger.log('aws stack: '); //CloudRunnerLogger.log('aws stack: ');
CloudRunnerLogger.log(taskDefCloudFormation); //CloudRunnerLogger.log(taskDefCloudFormation);
CloudRunnerLogger.log('aws error: '); CloudRunnerLogger.log('aws error: ');
core.error(error); core.error(JSON.stringify(error, undefined, 4));
CloudRunnerLogger.log('Getting events and resources for task stack'); CloudRunnerLogger.log('Getting events and resources for task stack');
const events = (await CF.describeStackEvents({ StackName: taskDefStackName }).promise()).StackEvents; const events = (await CF.describeStackEvents({ StackName: taskDefStackName }).promise()).StackEvents;
const resources = (await CF.describeStackResources({ StackName: taskDefStackName }).promise()).StackResources; const resources = (await CF.describeStackResources({ StackName: taskDefStackName }).promise()).StackResources;

View File

@ -156,9 +156,9 @@ export class AWSJobStack {
error, error,
CF, CF,
taskDefStackName, taskDefStackName,
taskDefCloudFormation, //taskDefCloudFormation,
parameters, //parameters,
secrets, //secrets,
); );
throw error; throw error;
} }

View File

@ -1,7 +1,7 @@
import AWSBuildPlatform from './aws/aws-build-platform'; import AWSBuildPlatform from './aws';
import { BuildParameters } from '..'; import { BuildParameters } from '..';
import { CloudRunnerState } from './state/cloud-runner-state'; import { CloudRunnerState } from './state/cloud-runner-state';
import Kubernetes from './k8s/kubernetes-build-platform'; import Kubernetes from './k8s';
import CloudRunnerLogger from './services/cloud-runner-logger'; import CloudRunnerLogger from './services/cloud-runner-logger';
import { CloudRunnerStepState } from './state/cloud-runner-step-state'; import { CloudRunnerStepState } from './state/cloud-runner-step-state';
import { WorkflowCompositionRoot } from './workflows/workflow-composition-root'; import { WorkflowCompositionRoot } from './workflows/workflow-composition-root';