Cdk component that automatically check pull requests
Project description
@cloudcomponents/cdk-pull-request-check
Cdk component that automatically check pull requests
Install
TypeScript/JavaScript:
npm install --save @cloudcomponents/cdk-pull-request-check
Python:
pip install cloudcomponents.cdk-pull-request-check
How to use
import { Construct, Stack, StackProps } from '@aws-cdk/core';
import { Repository } from '@aws-cdk/aws-codecommit';
import { BuildSpec } from '@aws-cdk/aws-codebuild';
import { PullRequestCheck } from '@cloudcomponents/cdk-pull-request-check';
export class CodePipelineStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
const repository = new Repository(this, 'Repository', {
repositoryName: 'MyRepositoryName',
});
// CodePipeline etc.
new PullRequestCheck(this, 'PullRequestCheck', {
repository,
buildSpec: BuildSpec.fromSourceFilename('prcheck.yml'),
});
}
}
Approval Template Rules
import { Construct, Stack, StackProps } from '@aws-cdk/core';
import { Repository } from '@aws-cdk/aws-codecommit';
import { BuildSpec } from '@aws-cdk/aws-codebuild';
import { PullRequestCheck } from '@cloudcomponents/cdk-pull-request-check';
import {
ApprovalRuleTemplate,
ApprovalRuleTemplateRepositoryAssociation,
} from '@cloudcomponents/cdk-pull-request-approval-rule';
export class CodePipelinePullRequestCheckStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
const repository = new Repository(this, 'Repository', {
repositoryName: 'repository',
});
const { approvalRuleTemplateName } = new ApprovalRuleTemplate(
this,
'ApprovalRuleTemplate',
{
approvalRuleTemplateName: 'Require 1 approver',
template: {
approvers: {
numberOfApprovalsNeeded: 1,
},
},
},
);
new ApprovalRuleTemplateRepositoryAssociation(
this,
'ApprovalRuleTemplateRepositoryAssociation',
{
approvalRuleTemplateName,
repository,
},
);
// Approves the pull request
new PullRequestCheck(this, 'PullRequestCheck', {
repository,
buildSpec: BuildSpec.fromSourceFilename('prcheck.yml'),
});
}
}
Custom notifications
The component comments the pull request and sets the approval state by default. Custom notifications can be set up this way
import { Construct, Stack, StackProps } from '@aws-cdk/core';
import { Repository } from '@aws-cdk/aws-codecommit';
import { BuildSpec } from '@aws-cdk/aws-codebuild';
import { SnsTopic } from '@aws-cdk/aws-events-targets';
import { Topic } from '@aws-cdk/aws-sns';
import { EmailSubscription } from '@aws-cdk/aws-sns-subscriptions';
import { PullRequestCheck } from '@cloudcomponents/cdk-pull-request-check';
export class CodePipelineStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
const repository = new Repository(this, 'Repository', {
repositoryName: 'MyRepositoryName',
description: 'Some description.', // optional property
});
// Your CodePipeline...
const prCheck = new PullRequestCheck(this, 'PullRequestCheck', {
repository,
buildSpec: BuildSpec.fromSourceFilename('buildspecs/prcheck.yml'),
});
const prTopic = new Topic(this, 'PullRequestTopic');
prTopic.addSubscription(
new EmailSubscription(process.env.DEVSECOPS_TEAM_EMAIL as string),
);
prCheck.onCheckStarted('started', {
target: new SnsTopic(prTopic),
});
prCheck.onCheckSucceeded('succeeded', {
target: new SnsTopic(prTopic),
});
prCheck.onCheckFailed('failed', {
target: new SnsTopic(prTopic),
});
}
}
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
Close
Hashes for cloudcomponents.cdk-pull-request-check-1.50.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 73dea20122ac9e5fe17396e4b89f33abe8aba4986c5d85db72b7b13a47a23aa3 |
|
MD5 | 1862528ae6afd62d25314ee696376903 |
|
BLAKE2b-256 | 962c8692d3412b9a41f539dced8956c0ab9c329aef3fd51bd18aaaf202b5fcf5 |
Close
Hashes for cloudcomponents.cdk_pull_request_check-1.50.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a4b8d556f577246568fd896eac3ca7c233211fe474d446aad3cc1fd80a331a69 |
|
MD5 | a7cc068a417bfbe1bed773bb4945839c |
|
BLAKE2b-256 | 1bab6b91ad9d1bd4210c6eac642ca0fffc4dc4acc652290ca9c1ba14a2a4ed66 |