pull/310/head
Frostebite 2021-12-30 23:29:55 +00:00
parent 9b842af7bb
commit dca01ea4a0
6 changed files with 17 additions and 20 deletions

14
dist/index.js vendored
View File

@ -959,14 +959,11 @@ const cloud_runner_logger_1 = __importDefault(__webpack_require__(22855));
const core = __importStar(__webpack_require__(42186));
class AWSError {
static handleStackCreationFailure(error, CF, taskDefStackName) {
var _a;
return __awaiter(this, void 0, void 0, function* () {
cloud_runner_logger_1.default.log('aws error: ');
core.error(JSON.stringify(error, undefined, 4));
cloud_runner_logger_1.default.log('Getting events and resources for task stack');
const events = (_a = (yield CF.describeStackEvents({ StackName: taskDefStackName }).promise()).StackEvents) === null || _a === void 0 ? void 0 : _a.map((x) => {
x.ResourceStatus, x.ResourceStatusReason, x.ResourceProperties;
});
const events = (yield CF.describeStackEvents({ StackName: taskDefStackName }).promise()).StackEvents;
cloud_runner_logger_1.default.log(JSON.stringify(events, undefined, 4));
});
}
@ -1030,6 +1027,7 @@ class AWSJobStack {
const cleanupCloudFormation = fs.readFileSync(`${__dirname}/cloud-formations/cloudformation-stack-ttl.yml`, 'utf8');
cloud_runner_logger_1.default.log(JSON.stringify(secrets, undefined, 4));
for (const secret of secrets) {
secret.ParameterKey = `${buildGuid.replace(/[^\dA-Za-z]/g, '')}${secret.ParameterKey.replace(/[^\dA-Za-z]/g, '')}`;
if (typeof secret.ParameterValue == 'number') {
secret.ParameterValue = `${secret.ParameterValue}`;
}
@ -1037,9 +1035,9 @@ class AWSJobStack {
secrets = secrets.filter((x) => x !== secret);
continue;
}
taskDefCloudFormation = aws_templates_1.AWSTemplates.insertAtTemplate(taskDefCloudFormation, 'p1 - input', aws_templates_1.AWSTemplates.getParameterTemplate(secret.ParameterKey.replace(/[^\dA-Za-z]/g, '')));
taskDefCloudFormation = aws_templates_1.AWSTemplates.insertAtTemplate(taskDefCloudFormation, 'p2 - secret', aws_templates_1.AWSTemplates.getSecretTemplate(secret.ParameterKey.replace(/[^\dA-Za-z]/g, '')));
taskDefCloudFormation = aws_templates_1.AWSTemplates.insertAtTemplate(taskDefCloudFormation, 'p3 - container def', aws_templates_1.AWSTemplates.getSecretDefinitionTemplate(secret.EnvironmentVariable, secret.ParameterKey.replace(/[^\dA-Za-z]/g, '')));
taskDefCloudFormation = aws_templates_1.AWSTemplates.insertAtTemplate(taskDefCloudFormation, 'p1 - input', aws_templates_1.AWSTemplates.getParameterTemplate(secret.ParameterKey));
taskDefCloudFormation = aws_templates_1.AWSTemplates.insertAtTemplate(taskDefCloudFormation, 'p2 - secret', aws_templates_1.AWSTemplates.getSecretTemplate(`${secret.ParameterKey}`));
taskDefCloudFormation = aws_templates_1.AWSTemplates.insertAtTemplate(taskDefCloudFormation, 'p3 - container def', aws_templates_1.AWSTemplates.getSecretDefinitionTemplate(secret.EnvironmentVariable, secret.ParameterKey));
}
const secretsMappedToCloudFormationParameters = secrets.map((x) => {
return { ParameterKey: x.ParameterKey.replace(/[^\dA-Za-z]/g, ''), ParameterValue: x.ParameterValue };
@ -1403,7 +1401,7 @@ class AWSTemplates {
${p1}Secret:
Type: AWS::SecretsManager::Secret
Properties:
Name: !Join [ "", [ '${p1}', !Ref BUILDGUID ] ]
Name: '${p1}'
SecretString: !Ref ${p1}
`;
}

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -15,7 +15,7 @@
"cli": "yarn ts-node src/index.ts -m cli",
"test-cli": "yarn ts-node src/index.ts -m cli --projectPath test-project",
"test": "jest",
"test-i": "yarn run test-i-aws",
"test-i": "yarn run test-i-aws && yarn run test-i-k8s",
"test-i-aws": "cross-env cloudRunnerTests=true cloudRunnerCluster=aws yarn test -i",
"test-i-k8s": "cross-env cloudRunnerTests=true cloudRunnerCluster=k8s yarn test -i"
},

View File

@ -7,9 +7,7 @@ export class AWSError {
CloudRunnerLogger.log('aws error: ');
core.error(JSON.stringify(error, undefined, 4));
CloudRunnerLogger.log('Getting events and resources for task stack');
const events = (await CF.describeStackEvents({ StackName: taskDefStackName }).promise()).StackEvents?.map((x) => {
x.ResourceStatus, x.ResourceStatusReason, x.ResourceProperties;
});
const events = (await CF.describeStackEvents({ StackName: taskDefStackName }).promise()).StackEvents;
CloudRunnerLogger.log(JSON.stringify(events, undefined, 4));
}
}

View File

@ -28,6 +28,10 @@ export class AWSJobStack {
const cleanupCloudFormation = fs.readFileSync(`${__dirname}/cloud-formations/cloudformation-stack-ttl.yml`, 'utf8');
CloudRunnerLogger.log(JSON.stringify(secrets, undefined, 4));
for (const secret of secrets) {
secret.ParameterKey = `${buildGuid.replace(/[^\dA-Za-z]/g, '')}${secret.ParameterKey.replace(
/[^\dA-Za-z]/g,
'',
)}`;
if (typeof secret.ParameterValue == 'number') {
secret.ParameterValue = `${secret.ParameterValue}`;
}
@ -38,20 +42,17 @@ export class AWSJobStack {
taskDefCloudFormation = AWSTemplates.insertAtTemplate(
taskDefCloudFormation,
'p1 - input',
AWSTemplates.getParameterTemplate(secret.ParameterKey.replace(/[^\dA-Za-z]/g, '')),
AWSTemplates.getParameterTemplate(secret.ParameterKey),
);
taskDefCloudFormation = AWSTemplates.insertAtTemplate(
taskDefCloudFormation,
'p2 - secret',
AWSTemplates.getSecretTemplate(secret.ParameterKey.replace(/[^\dA-Za-z]/g, '')),
AWSTemplates.getSecretTemplate(`${secret.ParameterKey}`),
);
taskDefCloudFormation = AWSTemplates.insertAtTemplate(
taskDefCloudFormation,
'p3 - container def',
AWSTemplates.getSecretDefinitionTemplate(
secret.EnvironmentVariable,
secret.ParameterKey.replace(/[^\dA-Za-z]/g, ''),
),
AWSTemplates.getSecretDefinitionTemplate(secret.EnvironmentVariable, secret.ParameterKey),
);
}
const secretsMappedToCloudFormationParameters = secrets.map((x) => {

View File

@ -14,7 +14,7 @@ export class AWSTemplates {
${p1}Secret:
Type: AWS::SecretsManager::Secret
Properties:
Name: !Join [ "", [ '${p1}', !Ref BUILDGUID ] ]
Name: '${p1}'
SecretString: !Ref ${p1}
`;
}