UNPKG

aws-delivlib

Version:

A fabulous library for defining continuous pipelines for building, testing and releasing code libraries.

71 lines 8.75 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (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; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ChimeNotifier = void 0; const path = __importStar(require("path")); const aws_cdk_lib_1 = require("aws-cdk-lib"); const constructs_1 = require("constructs"); /** * Send a message to a Chime room when a pipeline fails */ class ChimeNotifier extends constructs_1.Construct { constructor(scope, id, props) { super(scope, id); const message = props.message ?? '/md @All Pipeline **$PIPELINE** failed in action **$ACTION**. Latest change:\n```\n$REVISION\n```\n([Failure details]($URL))'; if (props.webhookUrls.length > 0) { // Reuse the same Lambda code for all pipelines, we will move the Lambda parameterizations into // the CloudWatch Event Input. const notifierLambda = new aws_cdk_lib_1.aws_lambda.SingletonFunction(this, 'Default', { handler: 'index.handler', uuid: '0f4a3ee0-692e-4249-932f-a46a833886d8', code: aws_cdk_lib_1.aws_lambda.Code.fromAsset(path.join(__dirname, 'handler')), runtime: aws_cdk_lib_1.aws_lambda.Runtime.NODEJS_20_X, timeout: aws_cdk_lib_1.Duration.minutes(5), }); notifierLambda.addToRolePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({ actions: ['codepipeline:GetPipelineExecution', 'codepipeline:ListActionExecutions'], resources: [props.pipeline.pipelineArn], })); props.pipeline.onStateChange(`${this.node.path}-ChimeNotifier`, { target: new aws_cdk_lib_1.aws_events_targets.LambdaFunction(notifierLambda, { event: aws_cdk_lib_1.aws_events.RuleTargetInput.fromObject({ // Add parameters message, webhookUrls: props.webhookUrls, // Copy over "detail" field detail: aws_cdk_lib_1.aws_events.EventField.fromPath('$.detail'), }), }), eventPattern: { detail: { state: ['FAILED'], }, }, }); } } } exports.ChimeNotifier = ChimeNotifier; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpbWUtbm90aWZpZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjaGltZS1ub3RpZmllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3Qiw2Q0FPcUI7QUFDckIsMkNBQXVDO0FBaUN2Qzs7R0FFRztBQUNILE1BQWEsYUFBYyxTQUFRLHNCQUFTO0lBQzFDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBeUI7UUFDakUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxJQUFJLDhIQUE4SCxDQUFDO1FBRWhLLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2hDLCtGQUErRjtZQUMvRiw4QkFBOEI7WUFDOUIsTUFBTSxjQUFjLEdBQUcsSUFBSSx3QkFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7Z0JBQ25FLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixJQUFJLEVBQUUsc0NBQXNDO2dCQUM1QyxJQUFJLEVBQUUsd0JBQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUM1RCxPQUFPLEVBQUUsd0JBQU0sQ0FBQyxPQUFPLENBQUMsV0FBVztnQkFDbkMsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUM3QixDQUFDLENBQUM7WUFFSCxjQUFjLENBQUMsZUFBZSxDQUFDLElBQUkscUJBQUcsQ0FBQyxlQUFlLENBQUM7Z0JBQ3JELE9BQU8sRUFBRSxDQUFDLG1DQUFtQyxFQUFFLG1DQUFtQyxDQUFDO2dCQUNuRixTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQzthQUN4QyxDQUFDLENBQUMsQ0FBQztZQUVKLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLGdCQUFnQixFQUFFO2dCQUM5RCxNQUFNLEVBQUUsSUFBSSxnQ0FBYyxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUU7b0JBQ3hELEtBQUssRUFBRSx3QkFBTSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUM7d0JBQ3ZDLGlCQUFpQjt3QkFDakIsT0FBTzt3QkFDUCxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7d0JBQzlCLDJCQUEyQjt3QkFDM0IsTUFBTSxFQUFFLHdCQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7cUJBQy9DLENBQUM7aUJBQ0gsQ0FBQztnQkFDRixZQUFZLEVBQUU7b0JBQ1osTUFBTSxFQUFFO3dCQUNOLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQztxQkFDbEI7aUJBQ0Y7YUFDRixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7Q0FDRjtBQXhDRCxzQ0F3Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtcbiAgRHVyYXRpb24sXG4gIGF3c19jb2RlcGlwZWxpbmUgYXMgY3BpcGVsaW5lLFxuICBhd3NfaWFtIGFzIGlhbSxcbiAgYXdzX2xhbWJkYSBhcyBsYW1iZGEsXG4gIGF3c19ldmVudHMgYXMgZXZlbnRzLFxuICBhd3NfZXZlbnRzX3RhcmdldHMgYXMgZXZlbnRzX3RhcmdldHMsXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoaW1lTm90aWZpZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIENoaW1lIHdlYmhvb2sgVVJMcyB0byBzZW5kIHRvXG4gICAqL1xuICByZWFkb25seSB3ZWJob29rVXJsczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIHRvIHNlbmQgdG8gdGhlIGNoYW5uZWxzLlxuICAgKlxuICAgKiBDYW4gdXNlIHRoZSBmb2xsb3dpbmcgcGxhY2Vob2xkZXJzOlxuICAgKlxuICAgKiAtICRQSVBFTElORTogdGhlIG5hbWUgb2YgdGhlIHBpcGVsaW5lXG4gICAqIC0gJFJFVklTSU9OOiBkZXNjcmlwdGlvbiBvZiB0aGUgZmFpbGluZyByZXZpc2lvblxuICAgKiAtICRBQ1RJT046IG5hbWUgb2YgZmFpbGluZyBhY3Rpb25cbiAgICogLSAkVVJMOiBsaW5rIHRvIGZhaWxpbmcgYWN0aW9uIGRldGFpbHNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBBIGRlZmF1bHQgbWVzc2FnZVxuICAgKi9cbiAgcmVhZG9ubHkgbWVzc2FnZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIENoaW1lTm90aWZpZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGltZU5vdGlmaWVyUHJvcHMgZXh0ZW5kcyBDaGltZU5vdGlmaWVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBDb2RlIFBpcGVsaW5lIHRvIGxpc3RlbiB0b1xuICAgKi9cbiAgcmVhZG9ubHkgcGlwZWxpbmU6IGNwaXBlbGluZS5JUGlwZWxpbmU7XG59XG5cbi8qKlxuICogU2VuZCBhIG1lc3NhZ2UgdG8gYSBDaGltZSByb29tIHdoZW4gYSBwaXBlbGluZSBmYWlsc1xuICovXG5leHBvcnQgY2xhc3MgQ2hpbWVOb3RpZmllciBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDaGltZU5vdGlmaWVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgbWVzc2FnZSA9IHByb3BzLm1lc3NhZ2UgPz8gJy9tZCBAQWxsIFBpcGVsaW5lICoqJFBJUEVMSU5FKiogZmFpbGVkIGluIGFjdGlvbiAqKiRBQ1RJT04qKi4gTGF0ZXN0IGNoYW5nZTpcXG5gYGBcXG4kUkVWSVNJT05cXG5gYGBcXG4oW0ZhaWx1cmUgZGV0YWlsc10oJFVSTCkpJztcblxuICAgIGlmIChwcm9wcy53ZWJob29rVXJscy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBSZXVzZSB0aGUgc2FtZSBMYW1iZGEgY29kZSBmb3IgYWxsIHBpcGVsaW5lcywgd2Ugd2lsbCBtb3ZlIHRoZSBMYW1iZGEgcGFyYW1ldGVyaXphdGlvbnMgaW50b1xuICAgICAgLy8gdGhlIENsb3VkV2F0Y2ggRXZlbnQgSW5wdXQuXG4gICAgICBjb25zdCBub3RpZmllckxhbWJkYSA9IG5ldyBsYW1iZGEuU2luZ2xldG9uRnVuY3Rpb24odGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgICAgdXVpZDogJzBmNGEzZWUwLTY5MmUtNDI0OS05MzJmLWE0NmE4MzM4ODZkOCcsXG4gICAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnaGFuZGxlcicpKSxcbiAgICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzIwX1gsXG4gICAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICB9KTtcblxuICAgICAgbm90aWZpZXJMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogWydjb2RlcGlwZWxpbmU6R2V0UGlwZWxpbmVFeGVjdXRpb24nLCAnY29kZXBpcGVsaW5lOkxpc3RBY3Rpb25FeGVjdXRpb25zJ10sXG4gICAgICAgIHJlc291cmNlczogW3Byb3BzLnBpcGVsaW5lLnBpcGVsaW5lQXJuXSxcbiAgICAgIH0pKTtcblxuICAgICAgcHJvcHMucGlwZWxpbmUub25TdGF0ZUNoYW5nZShgJHt0aGlzLm5vZGUucGF0aH0tQ2hpbWVOb3RpZmllcmAsIHtcbiAgICAgICAgdGFyZ2V0OiBuZXcgZXZlbnRzX3RhcmdldHMuTGFtYmRhRnVuY3Rpb24obm90aWZpZXJMYW1iZGEsIHtcbiAgICAgICAgICBldmVudDogZXZlbnRzLlJ1bGVUYXJnZXRJbnB1dC5mcm9tT2JqZWN0KHtcbiAgICAgICAgICAgIC8vIEFkZCBwYXJhbWV0ZXJzXG4gICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgd2ViaG9va1VybHM6IHByb3BzLndlYmhvb2tVcmxzLFxuICAgICAgICAgICAgLy8gQ29weSBvdmVyIFwiZGV0YWlsXCIgZmllbGRcbiAgICAgICAgICAgIGRldGFpbDogZXZlbnRzLkV2ZW50RmllbGQuZnJvbVBhdGgoJyQuZGV0YWlsJyksXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pLFxuICAgICAgICBldmVudFBhdHRlcm46IHtcbiAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgIHN0YXRlOiBbJ0ZBSUxFRCddLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==