Constructs for chattool integration: #slack / msteams
Project description
@cloudcomponents/cdk-chatops
Constructs for chattool integration: #slack / msteams
Install
TypeScript/JavaScript:
npm i @cloudcomponents/cdk-chatops
Python:
pip install cloudcomponents.cdk-chatops
How to use
import {
RepositoryNotificationRule,
PipelineNotificationRule,
RepositoryEvent,
PipelineEvent,
SlackChannel,
MSTeamsIncomingWebhook,
} from '@cloudcomponents/cdk-developer-tools-notifications';
import {
SlackChannelConfiguration,
MSTeamsIncomingWebhookConfiguration,
AccountLabelMode,
} from '@cloudcomponents/cdk-chatops';
import { Stack, StackProps } from 'aws-cdk-lib';
import { Repository } from 'aws-cdk-lib/aws-codecommit';
import { Pipeline, Artifact } from 'aws-cdk-lib/aws-codepipeline';
import { CodeCommitSourceAction, ManualApprovalAction } from 'aws-cdk-lib/aws-codepipeline-actions';
import { Construct } from 'constructs';
export class NotificationsStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
const repository = new Repository(this, 'Repository', {
repositoryName: 'notifications-repository',
});
const slackChannel = new SlackChannelConfiguration(this, 'SlackChannel', {
slackWorkspaceId: process.env.SLACK_WORKSPACE_ID as string,
configurationName: 'notifications',
slackChannelId: process.env.SLACK_CHANNEL_ID as string,
});
const webhook = new MSTeamsIncomingWebhookConfiguration(
this,
'MSTeamsWebhook',
{
url: process.env.INCOMING_WEBHOOK_URL as string,
accountLabelMode: AccountLabelMode.ID_AND_ALIAS,
themeColor: '#FF0000',
},
);
new RepositoryNotificationRule(this, 'RepoNotifications', {
name: 'notifications-repository',
repository,
events: [
RepositoryEvent.COMMENTS_ON_COMMITS,
RepositoryEvent.PULL_REQUEST_CREATED,
RepositoryEvent.PULL_REQUEST_MERGED,
],
targets: [
new SlackChannel(slackChannel),
new MSTeamsIncomingWebhook(webhook),
],
});
const sourceArtifact = new Artifact();
const sourceAction = new CodeCommitSourceAction({
actionName: 'CodeCommit',
repository,
output: sourceArtifact,
});
const approvalAction = new ManualApprovalAction({
actionName: 'Approval',
});
const pipeline = new Pipeline(this, 'Pipeline', {
pipelineName: 'notifications-pipeline',
stages: [
{
stageName: 'Source',
actions: [sourceAction],
},
{
stageName: 'Approval',
actions: [approvalAction],
},
],
});
new PipelineNotificationRule(this, 'PipelineNotificationRule', {
name: 'pipeline-notification',
pipeline,
events: [
PipelineEvent.PIPELINE_EXECUTION_STARTED,
PipelineEvent.PIPELINE_EXECUTION_FAILED,
PipelineEvent.PIPELINE_EXECUTION_SUCCEEDED,
// PipelineEvent.ACTION_EXECUTION_STARTED,
// PipelineEvent.ACTION_EXECUTION_SUCCEEDED,
// PipelineEvent.ACTION_EXECUTION_FAILED,
PipelineEvent.MANUAL_APPROVAL_NEEDED,
PipelineEvent.MANUAL_APPROVAL_SUCCEEDED,
// PipelineEvent.MANUAL_APPROVAL_FAILED,
// PipelineEvent.STAGE_EXECUTION_STARTED,
// PipelineEvent.STAGE_EXECUTION_SUCCEEDED,
// PipelineEvent.STAGE_EXECUTION_FAILED,
],
targets: [
new SlackChannel(slackChannel),
new MSTeamsIncomingWebhook(webhook),
],
});
}
}
MSTeams
- Navigate to the channel where you want to add the webhook and select (•••) More Options from the top navigation bar.
- Choose Connectors from the drop-down menu and search for Incoming Webhook.
- Select the Configure button, provide a name, and, optionally, upload an image avatar for your webhook.
- The dialog window will present a unique URL that will map to the channel. Make sure that you copy and save the URL—you will need to provide it to the outside service.
- Select the Done button. The webhook will be available in the team channel.
API Reference
See API.md.
Example
See more complete examples.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file cloudcomponents.cdk-chatops-2.4.0.tar.gz
.
File metadata
- Download URL: cloudcomponents.cdk-chatops-2.4.0.tar.gz
- Upload date:
- Size: 157.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.12.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 30184e3d3b39c95d3a0893e8c0a87be6c4f2c42c438a8dad1422b51044d7b15b |
|
MD5 | 4d83ceee69596d5a894cae888d08ece2 |
|
BLAKE2b-256 | d95a63eea0eb864feae53ca6e724d8ef54727e582c105a60d1bfdb669d1b9bee |
File details
Details for the file cloudcomponents.cdk_chatops-2.4.0-py3-none-any.whl
.
File metadata
- Download URL: cloudcomponents.cdk_chatops-2.4.0-py3-none-any.whl
- Upload date:
- Size: 155.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.12.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba8937c39677a8991f3be14c98e48d19a2d99b2a17b1c043079173b039ee2153 |
|
MD5 | cae40ba4314a6738738e36680582bc56 |
|
BLAKE2b-256 | 33d203724953b9ce2583dc733e54a8d9882a92c277a1e8f4ef7a852140e59c0f |