UNPKG

aws-delivlib

Version:

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

75 lines 7.8 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.SlackNotification = exports.SlackNotificationDetailLevel = void 0; const crypto = __importStar(require("crypto")); const aws_cdk_lib_1 = require("aws-cdk-lib"); /** * The level of details to be included in a slack notification. */ var SlackNotificationDetailLevel; (function (SlackNotificationDetailLevel) { /** * Basic event details without the contents of the error message. */ SlackNotificationDetailLevel["BASIC"] = "BASIC"; /** * Information included in BASIC, plus the contents of the error message. */ SlackNotificationDetailLevel["FULL"] = "FULL"; })(SlackNotificationDetailLevel = exports.SlackNotificationDetailLevel || (exports.SlackNotificationDetailLevel = {})); /** * Notify events on pipeline to a Slack channel via AWS Chatbot */ class SlackNotification { constructor(props) { this.props = props; if (this.props.channels.length == 0) { throw new Error('channels cannot be empty'); } } bind(options) { const targets = this.props.channels.map(c => { return { targetAddress: c.slackChannelConfigurationArn, targetType: 'AWSChatbotSlack', }; }); const hash = crypto.createHash('md5') .update(JSON.stringify( // Resolving the value so tokens don't cause flaky outputs aws_cdk_lib_1.Stack.of(options.pipeline).resolve(targets))) .digest('hex'); new aws_cdk_lib_1.aws_codestarnotifications.CfnNotificationRule(options.pipeline, `PipelineNotificationSlack-${hash}`, { name: `${options.pipeline.pipeline.pipelineName}-${hash}`, detailType: this.props.detailLevel ?? SlackNotificationDetailLevel.BASIC, resource: options.pipeline.pipeline.pipelineArn, targets, eventTypeIds: ['codepipeline-pipeline-action-execution-failed'], }); } } exports.SlackNotification = SlackNotification; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzbGFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUNqQyw2Q0FJcUI7QUFtQnJCOztHQUVHO0FBQ0gsSUFBWSw0QkFTWDtBQVRELFdBQVksNEJBQTRCO0lBQ3RDOztPQUVHO0lBQ0gsK0NBQWUsQ0FBQTtJQUNmOztPQUVHO0lBQ0gsNkNBQWEsQ0FBQTtBQUNmLENBQUMsRUFUVyw0QkFBNEIsR0FBNUIsb0NBQTRCLEtBQTVCLG9DQUE0QixRQVN2QztBQUVEOztHQUVHO0FBQ0gsTUFBYSxpQkFBaUI7SUFDNUIsWUFBNkIsS0FBNkI7UUFBN0IsVUFBSyxHQUFMLEtBQUssQ0FBd0I7UUFDeEQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztTQUM3QztJQUNILENBQUM7SUFFTSxJQUFJLENBQUMsT0FBd0M7UUFDbEQsTUFBTSxPQUFPLEdBQW9ELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMzRixPQUFPO2dCQUNMLGFBQWEsRUFBRSxDQUFDLENBQUMsNEJBQTRCO2dCQUM3QyxVQUFVLEVBQUUsaUJBQWlCO2FBQzlCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO2FBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUztRQUNwQiwwREFBMEQ7UUFDMUQsbUJBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUM3QzthQUNBLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQixJQUFJLHVDQUFVLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSw2QkFBNkIsSUFBSSxFQUFFLEVBQUU7WUFDeEYsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxJQUFJLElBQUksRUFBRTtZQUN6RCxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksNEJBQTRCLENBQUMsS0FBSztZQUN4RSxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVztZQUMvQyxPQUFPO1lBQ1AsWUFBWSxFQUFFLENBQUMsK0NBQStDLENBQUM7U0FDaEUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBNUJELDhDQTRCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHtcbiAgYXdzX2NoYXRib3QgYXMgY2hhdGJvdCxcbiAgYXdzX2NvZGVzdGFybm90aWZpY2F0aW9ucyBhcyBzdGFybm90aWZzLFxuICBTdGFjayxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgSVBpcGVsaW5lTm90aWZpY2F0aW9uLCBQaXBlbGluZU5vdGlmaWNhdGlvbkJpbmRPcHRpb25zIH0gZnJvbSAnLi4vJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGluaXRpYWxpemUgU2xhY2tOb3RpZmljYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTbGFja05vdGlmaWNhdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIENoYXRib3QgcmVnaXN0ZXJlZCBzbGFjayBjaGFubmVscy5cbiAgICovXG4gIHJlYWRvbmx5IGNoYW5uZWxzOiBjaGF0Ym90LlNsYWNrQ2hhbm5lbENvbmZpZ3VyYXRpb25bXTtcblxuICAvKipcbiAgICogVGhlIGxldmVsIG9mIGRldGFpbHMgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIG5vdGlmaWNhdGlvblxuICAgKiBAZGVmYXVsdCBTbGFja05vdGlmaWNhdGlvbkRldGFpbExldmVsLkJBU0lDXG4gICAqL1xuICByZWFkb25seSBkZXRhaWxMZXZlbD86IFNsYWNrTm90aWZpY2F0aW9uRGV0YWlsTGV2ZWw7XG59XG5cbi8qKlxuICogVGhlIGxldmVsIG9mIGRldGFpbHMgdG8gYmUgaW5jbHVkZWQgaW4gYSBzbGFjayBub3RpZmljYXRpb24uXG4gKi9cbmV4cG9ydCBlbnVtIFNsYWNrTm90aWZpY2F0aW9uRGV0YWlsTGV2ZWwge1xuICAvKipcbiAgICogQmFzaWMgZXZlbnQgZGV0YWlscyB3aXRob3V0IHRoZSBjb250ZW50cyBvZiB0aGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEJBU0lDID0gJ0JBU0lDJyxcbiAgLyoqXG4gICAqIEluZm9ybWF0aW9uIGluY2x1ZGVkIGluIEJBU0lDLCBwbHVzIHRoZSBjb250ZW50cyBvZiB0aGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEZVTEwgPSAnRlVMTCcsXG59XG5cbi8qKlxuICogTm90aWZ5IGV2ZW50cyBvbiBwaXBlbGluZSB0byBhIFNsYWNrIGNoYW5uZWwgdmlhIEFXUyBDaGF0Ym90XG4gKi9cbmV4cG9ydCBjbGFzcyBTbGFja05vdGlmaWNhdGlvbiBpbXBsZW1lbnRzIElQaXBlbGluZU5vdGlmaWNhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IFNsYWNrTm90aWZpY2F0aW9uUHJvcHMpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5jaGFubmVscy5sZW5ndGggPT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjaGFubmVscyBjYW5ub3QgYmUgZW1wdHknKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYmluZChvcHRpb25zOiBQaXBlbGluZU5vdGlmaWNhdGlvbkJpbmRPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0czogc3Rhcm5vdGlmcy5DZm5Ob3RpZmljYXRpb25SdWxlLlRhcmdldFByb3BlcnR5W10gPSB0aGlzLnByb3BzLmNoYW5uZWxzLm1hcChjID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRhcmdldEFkZHJlc3M6IGMuc2xhY2tDaGFubmVsQ29uZmlndXJhdGlvbkFybixcbiAgICAgICAgdGFyZ2V0VHlwZTogJ0FXU0NoYXRib3RTbGFjaycsXG4gICAgICB9O1xuICAgIH0pO1xuICAgIGNvbnN0IGhhc2ggPSBjcnlwdG8uY3JlYXRlSGFzaCgnbWQ1JylcbiAgICAgIC51cGRhdGUoSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIC8vIFJlc29sdmluZyB0aGUgdmFsdWUgc28gdG9rZW5zIGRvbid0IGNhdXNlIGZsYWt5IG91dHB1dHNcbiAgICAgICAgU3RhY2sub2Yob3B0aW9ucy5waXBlbGluZSkucmVzb2x2ZSh0YXJnZXRzKSksXG4gICAgICApXG4gICAgICAuZGlnZXN0KCdoZXgnKTtcbiAgICBuZXcgc3Rhcm5vdGlmcy5DZm5Ob3RpZmljYXRpb25SdWxlKG9wdGlvbnMucGlwZWxpbmUsIGBQaXBlbGluZU5vdGlmaWNhdGlvblNsYWNrLSR7aGFzaH1gLCB7XG4gICAgICBuYW1lOiBgJHtvcHRpb25zLnBpcGVsaW5lLnBpcGVsaW5lLnBpcGVsaW5lTmFtZX0tJHtoYXNofWAsXG4gICAgICBkZXRhaWxUeXBlOiB0aGlzLnByb3BzLmRldGFpbExldmVsID8/IFNsYWNrTm90aWZpY2F0aW9uRGV0YWlsTGV2ZWwuQkFTSUMsXG4gICAgICByZXNvdXJjZTogb3B0aW9ucy5waXBlbGluZS5waXBlbGluZS5waXBlbGluZUFybixcbiAgICAgIHRhcmdldHMsXG4gICAgICBldmVudFR5cGVJZHM6IFsnY29kZXBpcGVsaW5lLXBpcGVsaW5lLWFjdGlvbi1leGVjdXRpb24tZmFpbGVkJ10sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==