Refactor state and steps out of cloud-runner main class
parent
11fd1dccbf
commit
c664a315c1
|
|
@ -440,7 +440,6 @@ class AWSBuildEnvironment {
|
|||
let taskDefCloudFormation = this.readTaskCloudFormationTemplate();
|
||||
const cleanupTaskDefStackName = `${taskDefStackName}-cleanup`;
|
||||
const cleanupCloudFormation = fs.readFileSync(`${__dirname}/cloud-formations/cloudformation-stack-ttl.yml`, 'utf8');
|
||||
try {
|
||||
for (const secret of secrets) {
|
||||
if (typeof secret.ParameterValue == 'number') {
|
||||
secret.ParameterValue = `${secret.ParameterValue}`;
|
||||
|
|
@ -456,11 +455,7 @@ class AWSBuildEnvironment {
|
|||
const secretsMappedToCloudFormationParameters = secrets.map((x) => {
|
||||
return { ParameterKey: x.ParameterKey.replace(/[^\dA-Za-z]/g, ''), ParameterValue: x.ParameterValue };
|
||||
});
|
||||
yield CF.createStack({
|
||||
StackName: taskDefStackName,
|
||||
TemplateBody: taskDefCloudFormation,
|
||||
Capabilities: ['CAPABILITY_IAM'],
|
||||
Parameters: [
|
||||
const parameters = [
|
||||
{
|
||||
ParameterKey: 'EnvironmentName',
|
||||
ParameterValue: this.baseStackName,
|
||||
|
|
@ -494,7 +489,13 @@ class AWSBuildEnvironment {
|
|||
ParameterValue: buildGuid,
|
||||
},
|
||||
...secretsMappedToCloudFormationParameters,
|
||||
],
|
||||
];
|
||||
try {
|
||||
yield CF.createStack({
|
||||
StackName: taskDefStackName,
|
||||
TemplateBody: taskDefCloudFormation,
|
||||
Capabilities: ['CAPABILITY_IAM'],
|
||||
Parameters: parameters,
|
||||
}).promise();
|
||||
cloud_runner_logger_1.default.log('Creating cloud runner job');
|
||||
yield CF.createStack({
|
||||
|
|
@ -524,11 +525,10 @@ class AWSBuildEnvironment {
|
|||
},
|
||||
],
|
||||
}).promise();
|
||||
// Side effect: CloudRunnerLogger.log('Creating cleanup double checker cron job...');
|
||||
yield CF.waitFor('stackCreateComplete', { StackName: taskDefStackName }).promise();
|
||||
}
|
||||
catch (error) {
|
||||
yield this.handleStackCreationFailure(error, CF, taskDefStackName, taskDefCloudFormation, secrets);
|
||||
yield this.handleStackCreationFailure(error, CF, taskDefStackName, taskDefCloudFormation, parameters, secrets);
|
||||
throw error;
|
||||
}
|
||||
const taskDefResources = (yield CF.describeStackResources({
|
||||
|
|
@ -625,10 +625,15 @@ class AWSBuildEnvironment {
|
|||
}
|
||||
});
|
||||
}
|
||||
handleStackCreationFailure(error, CF, taskDefStackName, taskDefCloudFormation, secrets) {
|
||||
handleStackCreationFailure(error, CF, taskDefStackName, taskDefCloudFormation, parameters, secrets) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
cloud_runner_logger_1.default.log('aws stack parameters: ');
|
||||
cloud_runner_logger_1.default.log(JSON.stringify(parameters, undefined, 4));
|
||||
cloud_runner_logger_1.default.log('aws stack secrets: ');
|
||||
cloud_runner_logger_1.default.log(JSON.stringify(secrets, undefined, 4));
|
||||
cloud_runner_logger_1.default.log('aws stack: ');
|
||||
cloud_runner_logger_1.default.log(taskDefCloudFormation);
|
||||
cloud_runner_logger_1.default.log('aws error: ');
|
||||
core.error(error);
|
||||
cloud_runner_logger_1.default.log('Getting events and resources for task stack');
|
||||
const events = (yield CF.describeStackEvents({ StackName: taskDefStackName }).promise()).StackEvents;
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
|||
export class AWSBaseStack {}
|
||||
|
|
@ -128,7 +128,6 @@ class AWSBuildEnvironment implements CloudRunnerProviderInterface {
|
|||
const cleanupTaskDefStackName = `${taskDefStackName}-cleanup`;
|
||||
const cleanupCloudFormation = fs.readFileSync(`${__dirname}/cloud-formations/cloudformation-stack-ttl.yml`, 'utf8');
|
||||
|
||||
try {
|
||||
for (const secret of secrets) {
|
||||
if (typeof secret.ParameterValue == 'number') {
|
||||
secret.ParameterValue = `${secret.ParameterValue}`;
|
||||
|
|
@ -156,12 +155,7 @@ class AWSBuildEnvironment implements CloudRunnerProviderInterface {
|
|||
const secretsMappedToCloudFormationParameters = secrets.map((x) => {
|
||||
return { ParameterKey: x.ParameterKey.replace(/[^\dA-Za-z]/g, ''), ParameterValue: x.ParameterValue };
|
||||
});
|
||||
|
||||
await CF.createStack({
|
||||
StackName: taskDefStackName,
|
||||
TemplateBody: taskDefCloudFormation,
|
||||
Capabilities: ['CAPABILITY_IAM'],
|
||||
Parameters: [
|
||||
const parameters = [
|
||||
{
|
||||
ParameterKey: 'EnvironmentName',
|
||||
ParameterValue: this.baseStackName,
|
||||
|
|
@ -195,7 +189,14 @@ class AWSBuildEnvironment implements CloudRunnerProviderInterface {
|
|||
ParameterValue: buildGuid,
|
||||
},
|
||||
...secretsMappedToCloudFormationParameters,
|
||||
],
|
||||
];
|
||||
|
||||
try {
|
||||
await CF.createStack({
|
||||
StackName: taskDefStackName,
|
||||
TemplateBody: taskDefCloudFormation,
|
||||
Capabilities: ['CAPABILITY_IAM'],
|
||||
Parameters: parameters,
|
||||
}).promise();
|
||||
CloudRunnerLogger.log('Creating cloud runner job');
|
||||
await CF.createStack({
|
||||
|
|
@ -225,12 +226,9 @@ class AWSBuildEnvironment implements CloudRunnerProviderInterface {
|
|||
},
|
||||
],
|
||||
}).promise();
|
||||
// Side effect: CloudRunnerLogger.log('Creating cleanup double checker cron job...');
|
||||
|
||||
await CF.waitFor('stackCreateComplete', { StackName: taskDefStackName }).promise();
|
||||
} catch (error) {
|
||||
await this.handleStackCreationFailure(error, CF, taskDefStackName, taskDefCloudFormation, secrets);
|
||||
|
||||
await this.handleStackCreationFailure(error, CF, taskDefStackName, taskDefCloudFormation, parameters, secrets);
|
||||
throw error;
|
||||
}
|
||||
|
||||
|
|
@ -342,10 +340,19 @@ class AWSBuildEnvironment implements CloudRunnerProviderInterface {
|
|||
CF: SDK.CloudFormation,
|
||||
taskDefStackName: string,
|
||||
taskDefCloudFormation: string,
|
||||
parameters: any[],
|
||||
secrets: CloudRunnerSecret[],
|
||||
) {
|
||||
CloudRunnerLogger.log('aws stack parameters: ');
|
||||
CloudRunnerLogger.log(JSON.stringify(parameters, undefined, 4));
|
||||
|
||||
CloudRunnerLogger.log('aws stack secrets: ');
|
||||
CloudRunnerLogger.log(JSON.stringify(secrets, undefined, 4));
|
||||
|
||||
CloudRunnerLogger.log('aws stack: ');
|
||||
CloudRunnerLogger.log(taskDefCloudFormation);
|
||||
|
||||
CloudRunnerLogger.log('aws error: ');
|
||||
core.error(error);
|
||||
CloudRunnerLogger.log('Getting events and resources for task stack');
|
||||
const events = (await CF.describeStackEvents({ StackName: taskDefStackName }).promise()).StackEvents;
|
||||
|
|
|
|||
Loading…
Reference in New Issue