[英]AWS CDK CodePipeline deploying app and CDK
我将 AWS CDK 与 typescript 一起使用,我想自动化我的 CDK 和代码 Package 部署。
我有 2 个 github 存储库: app-cdk
和app-website
。
我已经设置了一个 CodePipeline,如下所示:
const pipeline = new CodePipeline(this, 'MyAppPipeline', {
pipelineName: 'MyAppPipeline',
synth: new ShellStep('Synth', {
input: CodePipelineSource.gitHub(`${ORG_NAME}/app-cdk`, BRANCH_NAME, {
}),
commands: ['npm ci', 'npm run build', 'npx cdk synth']
})
});
并添加了一个 beta 阶段,如下所示
pipeline.addStage(new MyAppStage(this, 'Beta', {
env: {account: 'XXXXXXXXX', region: 'us-east-2' }
}))
当我将代码推送到我的 CDK 代码 package 并部署新资源时,这工作正常。 如何将我的网站存储库添加为启动此管道的源,以不同的方式构建,并将资产部署到必要的资源? 那不应该是 CodePipeline 的源代码和构建阶段的一部分吗?
我遇到过类似的情况,我必须为存储库中的多个 Static S3 站点创建 CDK 管道。
很快,很明显,这必须使用两个堆栈来完成,因为 Pipeline 要求 step 的类型为 Stage 并且不支持 Construct。
而我的 Static S3 网站是一个构造(BucketDeployment)。
我处理这种集成的方式如下
deployment_code_build = cb.Project(self, 'PartnerS3deployment',
project_name='PartnerStaticS3deployment',
source=cb.Source.git_hub(owner='<github-org>',
repo='<repo-name>', clone_depth=1,
webhook_filters=[
cb.FilterGroup.in_event_of(
cb.EventAction.PUSH).and_branch_is(
branch_name="main")]),
environment=cb.BuildEnvironment(
build_image=cb.LinuxBuildImage.STANDARD_5_0
))
这添加/提供了一个 Codebuild 项目,它将动态部署 cdk ls 的变更集
上面的 Codebuild 项目将需要一个 buildspecfile 在你的 repo 的根目录中,并带有以下代码(供参考)
version: 0.2
phases:
install:
commands:
- echo Entered in install phase...
- npm install -g aws-cdk
- cdk --version
build:
commands:
- pwd
- cd cdk_pipeline_static_websites
- ls -lah
- python -m pip install -r requirements.txt
- nohup ./parallel_deploy.sh & echo $! > pidfile && wait $(cat pidfile)
finally:
- echo Build completed on `date`
parallel_deploy.sh的内容如下
#!/bin/bash
for stack in $(cdk list);
do
cdk deploy $stack --require-approval=never &
done;
虽然这很好用,但必须有一个更简单的替代方案,可以直接在 CDK 管道 class 中导入其他堆栈/结构。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.