Skip to content

Commit c244b8e

Browse files
Merge pull request #340 from code-dot-org/pipeline-notify
Notify slack upon pipeline progress
2 parents 57eb66b + c923c86 commit c244b8e

File tree

2 files changed

+62
-0
lines changed

2 files changed

+62
-0
lines changed

cicd/2-cicd/cicd.template.yml

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,3 +326,61 @@ Resources:
326326
SUBDOMAIN: !If [TargetsMainBranch, "javabuilder-test", !Sub "javabuilder-${GitHubBranch}-test"]
327327
OutputArtifacts:
328328
- Name: integrationTestResultsPOC
329+
330+
# Send pipeline events to an SNS topic.
331+
# Note: Integration with Slack via AWS ChatBot is configured manually via AWS Console.
332+
PipelineNotificationRule:
333+
Type: AWS::CodeStarNotifications::NotificationRule
334+
Properties:
335+
Name: !Sub ${AWS::StackName}-pipeline
336+
DetailType: FULL
337+
Resource: !Sub "arn:${AWS::Partition}:codepipeline:${AWS::Region}:${AWS::AccountId}:${Pipeline}"
338+
EventTypeIds:
339+
# Pipeline events
340+
- codepipeline-pipeline-pipeline-execution-failed
341+
- codepipeline-pipeline-pipeline-execution-succeeded
342+
- codepipeline-pipeline-pipeline-execution-canceled
343+
- codepipeline-pipeline-pipeline-execution-superseded
344+
- codepipeline-pipeline-pipeline-execution-started
345+
- codepipeline-pipeline-pipeline-execution-resumed
346+
# Stage Events
347+
- codepipeline-pipeline-stage-execution-started
348+
- codepipeline-pipeline-stage-execution-succeeded
349+
- codepipeline-pipeline-stage-execution-resumed
350+
- codepipeline-pipeline-stage-execution-canceled
351+
- codepipeline-pipeline-stage-execution-failed
352+
# Action Events
353+
- codepipeline-pipeline-action-execution-succeeded
354+
- codepipeline-pipeline-action-execution-failed
355+
- codepipeline-pipeline-action-execution-canceled
356+
- codepipeline-pipeline-action-execution-started
357+
# Approval Events (we don't use approvals yet)
358+
- codepipeline-pipeline-manual-approval-needed
359+
- codepipeline-pipeline-manual-approval-failed
360+
- codepipeline-pipeline-manual-approval-succeeded
361+
Targets:
362+
- TargetType: SNS
363+
TargetAddress: !Ref PipelineNotificationTopic
364+
365+
PipelineNotificationTopic:
366+
Type: AWS::SNS::Topic
367+
368+
# This policy is necessary for CodePipeline to be allowed to publish to the Topic.
369+
PipelineNotificationTopicPolicy:
370+
Type: AWS::SNS::TopicPolicy
371+
Properties:
372+
Topics:
373+
- !Ref PipelineNotificationTopic
374+
PolicyDocument:
375+
Version: '2012-10-17'
376+
Statement:
377+
- Sid: AWSCodeStarNotifications_publish
378+
Effect: Allow
379+
Principal:
380+
Service:
381+
- codestar-notifications.amazonaws.com
382+
Action: SNS:Publish
383+
Resource: !Ref PipelineNotificationTopic
384+
Condition:
385+
StringEquals:
386+
aws:SourceAccount: !Ref AWS::AccountId

cicd/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,7 @@ Finally, all of the above need some Roles to exist in the AWS accounts before we
5353

5454
* "deploy-setup.sh"
5555
* "setup.template.yml" - AWS resources for the Setup infrastructure
56+
57+
## Opportunities
58+
59+
- Design more granular notifications by calling Slack webhooks _within_ steps.

0 commit comments

Comments
 (0)