From 6621e2a4f5a6548363fc7875f3e7ce87317cb10f Mon Sep 17 00:00:00 2001 From: William Putra Intan <61998484+williamputraintan@users.noreply.github.com> Date: Tue, 27 Feb 2024 18:17:30 +1100 Subject: [PATCH] init --- .../orcabus-stateful-pipeline-stack.ts | 26 +++++++++++++++++++ .../orcabus-stateless-pipeline-stack.ts | 26 +++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/lib/pipeline/orcabus-stateful-pipeline-stack.ts b/lib/pipeline/orcabus-stateful-pipeline-stack.ts index 2e725703a..58d2cf12c 100644 --- a/lib/pipeline/orcabus-stateful-pipeline-stack.ts +++ b/lib/pipeline/orcabus-stateful-pipeline-stack.ts @@ -4,6 +4,9 @@ import * as ssm from 'aws-cdk-lib/aws-ssm'; import * as pipelines from 'aws-cdk-lib/pipelines'; import * as codebuild from 'aws-cdk-lib/aws-codebuild'; import * as iam from 'aws-cdk-lib/aws-iam'; +import * as codepipeline from 'aws-cdk-lib/aws-codepipeline'; +import * as chatbot from 'aws-cdk-lib/aws-chatbot'; +import * as codestarnotifications from 'aws-cdk-lib/aws-codestarnotifications'; import { OrcaBusStatefulConfig, OrcaBusStatefulStack } from '../workload/orcabus-stateful-stack'; import { getEnvironmentConfig } from '../../config/constants'; @@ -108,6 +111,29 @@ export class StatefulPipelineStack extends cdk.Stack { }), { pre: [new pipelines.ManualApprovalStep('PromoteToProd')] } ); + + // need to build pipeline so we could add notification at the pipeline construct + pipeline.buildPipeline(); + + // notification for success/failure + const arteriaDevSlackConfigArn = ssm.StringParameter.valueForTypedStringParameterV2( + this, + '/data_portal/backend/slack_channel' + ); + const target = chatbot.SlackChannelConfiguration.fromSlackChannelConfigurationArn( + this, + 'SlackChannelConfiguration', + arteriaDevSlackConfigArn + ); + + pipeline.pipeline.notifyOn('PipelineSlackNotification', target, { + events: [ + codepipeline.PipelineNotificationEvents.PIPELINE_EXECUTION_FAILED, + codepipeline.PipelineNotificationEvents.PIPELINE_EXECUTION_SUCCEEDED, + ], + detailType: codestarnotifications.DetailType.BASIC, + notificationRuleName: 'orcabus_stateful_pipeline_notification', + }); } } diff --git a/lib/pipeline/orcabus-stateless-pipeline-stack.ts b/lib/pipeline/orcabus-stateless-pipeline-stack.ts index d542c0434..4dbea2766 100644 --- a/lib/pipeline/orcabus-stateless-pipeline-stack.ts +++ b/lib/pipeline/orcabus-stateless-pipeline-stack.ts @@ -4,6 +4,9 @@ import * as ssm from 'aws-cdk-lib/aws-ssm'; import * as pipelines from 'aws-cdk-lib/pipelines'; import * as codebuild from 'aws-cdk-lib/aws-codebuild'; import * as iam from 'aws-cdk-lib/aws-iam'; +import * as chatbot from 'aws-cdk-lib/aws-chatbot'; +import * as codepipeline from 'aws-cdk-lib/aws-codepipeline'; +import * as codestarnotifications from 'aws-cdk-lib/aws-codestarnotifications'; import { OrcaBusStatelessConfig, OrcaBusStatelessStack } from '../workload/orcabus-stateless-stack'; import { getEnvironmentConfig } from '../../config/constants'; @@ -117,6 +120,29 @@ export class StatelessPipelineStack extends cdk.Stack { }), { pre: [new pipelines.ManualApprovalStep('PromoteToProd')] } ); + + // need to build pipeline so we could add notification at the pipeline construct + pipeline.buildPipeline(); + + // notification for success/failure + const arteriaDevSlackConfigArn = ssm.StringParameter.valueForTypedStringParameterV2( + this, + '/data_portal/backend/slack_channel' + ); + const target = chatbot.SlackChannelConfiguration.fromSlackChannelConfigurationArn( + this, + 'SlackChannelConfiguration', + arteriaDevSlackConfigArn + ); + + pipeline.pipeline.notifyOn('PipelineSlackNotification', target, { + events: [ + codepipeline.PipelineNotificationEvents.PIPELINE_EXECUTION_FAILED, + codepipeline.PipelineNotificationEvents.PIPELINE_EXECUTION_SUCCEEDED, + ], + detailType: codestarnotifications.DetailType.BASIC, + notificationRuleName: 'orcabus_stateless_pipeline_notification', + }); } }