AWS CDKのスタックをGitHubからCodePipeline連携で自動更新する
LambdaをGitHubの1つのリポジトリでまとめて管理する時などに、AWS CDKで管理して、
CodePipeline連携で自動更新できると便利だと思ったので作成しました。
環境
CDK CLI: 1.27.0
コード
CDKリポジトリのlib
ディレクトリ内に以下のtsファイルを作成します。
cdk-pipeline-stack.ts
import * as cdk from '@aws-cdk/core';
import * as codebuild from '@aws-cdk/aws-codebuild'
import * as codepipeline from '@aws-cdk/aws-codepipeline'
import * as codepipeline_actions from '@aws-cdk/aws-codepipeline-actions'
import * as iam from '@aws-cdk/aws-iam'
export class CdkPipelineStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props)
const build = new codebuild.PipelineProject(this,'testBuild',{
buildSpec: codebuild.BuildSpec.fromObject({
version: '0.2',
phases: {
install: {
commands: [
'npm install -g [email protected]',
'npm install -g typescript'
]
},
pre_build: {
commands: 'npm i'
},
post_build: {
commands: [
'cdk deploy --require-approval never'
]
},
},
}),
projectName: 'cdk-deploy'
})
build.addToRolePolicy(new iam.PolicyStatement({
resources: ['*'],
actions: ['*']
}))
const sourceOutput = new codepipeline.Artifact()
const repositoryName = '管理したいGitHubのリポジトリ名'
const owner = 'リポジトリの所有者名'
const oauthToken = 'GitHubのトークン'
const branch = 'master'
const sourceAction = new codepipeline_actions.GitHubSourceAction ({
actionName: 'Github_Source',
owner: owner,
repo: repositoryName,
branch: branch,
oauthToken: cdk.SecretValue.plainText(oauthToken),
trigger: codepipeline_actions.GitHubTrigger.WEBHOOK,
output: sourceOutput
})
const buildOutput = new codepipeline.Artifact()
const buildAction = new codepipeline_actions.CodeBuildAction({
actionName: 'CodeBuild',
project: build,
input: sourceOutput,
outputs: [buildOutput]
})
new codepipeline.Pipeline(this, 'pipeline', {
pipelineName: 'cdk-deploy-pipeline',
stages: [
{
stageName: 'Source',
actions: [
sourceAction
],
},
{
stageName: 'Build',
actions: [
buildAction
],
}
]
})
}
}
このスタックをデプロイすると、CodePipelineが作成されます。
対象となるGitHubのリポジトリのmasterブランチの更新を契機に、
cdk deploy
が実行されて、対象リポジトリのスタックが更新されます。
Author And Source
この問題について(AWS CDKのスタックをGitHubからCodePipeline連携で自動更新する), 我々は、より多くの情報をここで見つけました https://qiita.com/nomi3/items/901fa344b92e8137f80f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .