[英]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.