Skip to main content

Cdk component that provisions a #slack approval workflow and notification messages on codepipeline state changes

Project description

cloudcomponents Logo

@cloudcomponents/cdk-codepipeline-slack

Build Status cdkdx typescript python Mentioned in Awesome CDK

Cdk component that provisions a #slack approval workflow and notification messages on codepipeline state changes

Approval Workflow

Review Dialog

Install

TypeScript/JavaScript:

npm install --save @cloudcomponents/cdk-codepipeline-slack

Python:

pip install cloudcomponents.cdk-codepipeline-slack

How to use

import { SlackApprovalAction, SlackNotifier } from '@cloudcomponents/cdk-codepipeline-slack';
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 } from 'aws-cdk-lib/aws-codepipeline-actions';
import { Construct } from 'constructs';

export class CodePipelineSlackApprovalStack extends Stack {
  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props);

    const repository = new Repository(this, 'Repository', {
      repositoryName: 'MyRepositoryName',
    });

    const sourceArtifact = new Artifact();

    const sourceAction = new CodeCommitSourceAction({
      actionName: 'CodeCommit',
      repository,
      output: sourceArtifact,
    });

    if (typeof process.env.SLACK_BOT_TOKEN === 'undefined') {
      throw new Error('environment variable SLACK_BOT_TOKEN undefined');
    }
    const slackBotToken = process.env.SLACK_BOT_TOKEN;

    if (typeof process.env.SLACK_SIGNING_SECRET === 'undefined') {
      throw new Error('environment variable SLACK_SIGNING_SECRET undefined');
    }
    const slackSigningSecret = process.env.SLACK_SIGNING_SECRET;

    if (typeof process.env.SLACK_CHANNEL_NAME === 'undefined') {
      throw new Error('environment variable SLACK_CHANNEL_NAME undefined');
    }
    const slackChannel = process.env.SLACK_CHANNEL_NAME;

    const approvalAction = new SlackApprovalAction({
      actionName: 'SlackApproval',
      slackBotToken,
      slackSigningSecret,
      slackChannel,
      externalEntityLink: 'http://cloudcomponents.org',
      additionalInformation: 'Would you like to promote the build to production?',
    });

    const pipeline = new Pipeline(this, 'MyPipeline', {
      pipelineName: 'MyPipeline',
      stages: [
        {
          stageName: 'Source',
          actions: [sourceAction],
        },
        {
          stageName: 'Approval',
          actions: [approvalAction],
        },
      ],
    });

    new SlackNotifier(this, 'SlackNotifier', {
      pipeline,
      slackBotToken,
      slackSigningSecret,
      slackChannel,
    });
  }
}

Slack App Settings

Create an app that’s just for your workspace

OAuth & Permissions

Grant the channels::history-Scope to the Bot in your app and Add the Bot to the configured Slack-Channel

Select Permission Scopes:

OAuth Scopes

Interactive Components

Enter the url of your api from the AWS Api Gateway and append /slack/actions:

Interactive Components

API Reference

See API.md.

Example

See more complete examples.

License

MIT

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-codepipeline-slack-2.0.0.tar.gz.

File metadata

  • Download URL: cloudcomponents.cdk-codepipeline-slack-2.0.0.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.1 readme-renderer/30.0 requests/2.26.0 requests-toolbelt/0.9.1 urllib3/1.26.7 tqdm/4.62.3 importlib-metadata/4.8.2 keyring/23.2.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for cloudcomponents.cdk-codepipeline-slack-2.0.0.tar.gz
Algorithm Hash digest
SHA256 d07e0dccfe93ce6b611b6ffe8240058a09ad4c3329b333592da89711fc8b0c62
MD5 e4742307cab375dff9d9c62b966c167d
BLAKE2b-256 31e44d80d55e4364e5cef27148194a936a3ad58323828a425543f4483ea7ae9a

See more details on using hashes here.

File details

Details for the file cloudcomponents.cdk_codepipeline_slack-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: cloudcomponents.cdk_codepipeline_slack-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.1 readme-renderer/30.0 requests/2.26.0 requests-toolbelt/0.9.1 urllib3/1.26.7 tqdm/4.62.3 importlib-metadata/4.8.2 keyring/23.2.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for cloudcomponents.cdk_codepipeline_slack-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0962e22a990906d808e3ecaa6403f212628da0081bdb27e93679a64a5c08ea9d
MD5 d5130915fb03ad292323bc8f180eba6d
BLAKE2b-256 27322bac54a3d3f5de5cf744c2f052d394eceb67a765f2b3e4b3e9cf233611e7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page