Metadata-Version: 2.1
Name: cloudcomponents.cdk-codepipeline-slack
Version: 1.0.70
Summary: Cdk component that provisions a #slack approval workflow and notification messages on codepipeline state changes
Home-page: https://github.com/cloudcomponents/cdk-constructs
Author: hupe1980
License: MIT
Project-URL: Source, https://github.com/cloudcomponents/cdk-constructs.git
Description: ![cloudcomponents Logo](https://raw.githubusercontent.com/cloudcomponents/cdk-constructs/master/logo.png)
        
        # @cloudcomponents/cdk-codepipeline-slack
        
        [![Build Status](https://travis-ci.org/cloudcomponents/cdk-constructs.svg?branch=master)](https://travis-ci.org/cloudcomponents/cdk-constructs)
        [![typescript](https://img.shields.io/badge/jsii-typescript-blueviolet.svg)](https://www.npmjs.com/package/@cloudcomponents/cdk-codepipeline-slack)
        [![python](https://img.shields.io/badge/jsii-python-blueviolet.svg)](https://pypi.org/project/cloudcomponents.cdk-codepipeline-slack/)
        
        > Cdk component that provisions a #slack approval workflow and notification messages on codepipeline state changes
        
        ![Approval Workflow](https://raw.githubusercontent.com/cloudcomponents/cdk-constructs/master/packages/cdk-codepipeline-slack/assets/approval_workflow.png)
        
        ![Review Dialog](https://raw.githubusercontent.com/cloudcomponents/cdk-constructs/master/packages/cdk-codepipeline-slack/assets/review_dialog.png)
        
        ## Install
        
        TypeScript/JavaScript:
        
        ```bash
        npm install --save @cloudcomponents/cdk-codepipeline-slack
        ```
        
        Python:
        
        ```bash
        pip install cloudcomponents.cdk-codepipeline-slack
        ```
        
        ## How to use
        
        ```javascript
        import { Construct, Stack, StackProps } from '@aws-cdk/core';
        import { Repository } from '@aws-cdk/aws-codecommit';
        import { Pipeline, Artifact } from '@aws-cdk/aws-codepipeline';
        import {
          CodeCommitSourceAction,
          CodeBuildAction,
        } from '@aws-cdk/aws-codepipeline-actions';
        import { PipelineProject } from '@aws-cdk/aws-codebuild';
        
        import {
          SlackApprovalAction,
          SlackNotifier,
        } from '@cloudcomponents/cdk-codepipeline-slack';
        
        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,
            });
        
            const project = new PipelineProject(this, 'MyProject');
        
            const buildAction = new CodeBuildAction({
              actionName: 'CodeBuild',
              project,
              input: sourceArtifact,
            });
        
            const slackBotToken = process.env.SLACK_BOT_TOKEN as string;
            const slackSigningSecret = process.env.SLACK_SIGNING_SECRET as string;
            const slackChannel = process.env.SLACK_CHANNEL_NAME as string;
        
            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: 'Build',
                  actions: [buildAction],
                },
                {
                  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](https://raw.githubusercontent.com/cloudcomponents/cdk-constructs/master/packages/cdk-codepipeline-slack/assets/oauth_scope.png)
        
        ### Interactive Components
        
        Enter the url of your api from the AWS Api Gateway and append `/slack/actions`:
        
        ![Interactive Components](https://github.com/cloudcomponents/cdk-constructs/blob/master/packages/cdk-codepipeline-slack/assets/interactive_components.png)
        
        ## Example
        
        See more complete [examples](https://github.com/cloudcomponents/cdk-constructs/tree/master/examples).
        
        ## License
        
        [MIT](./LICENSE)
        
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: JavaScript
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Typing :: Typed
Classifier: License :: OSI Approved
Requires-Python: >=3.6
Description-Content-Type: text/markdown
