我的 AWS 项目构建一个 Docker 映像,将其推送到 ECR,然后将其部署到 ECS 容器。
源代码位于 CodeCommit 上,我已经有两个可用的 CDK 堆栈,用于 1) 构建 Docker 映像,以及 2) 部署到 ECS。
我想通过 CDK 设置管道。如果我使用控制台,则可以非常简单地设置管道,添加由堆栈定义的“构建”和“部署”阶段。
如果我想通过 CDK 设置管道,我可以使用如下 CDK Python 代码:
# Create a source action for CodeCommit
source_action = cpactions.CodeCommitSourceAction(
action_name="CodeCommit",
output=codepipeline.Artifact("SourceArtifact")
repository=codecommit.Repository(self, "SourceRepo",
repository_name=SOURCE_GIT_REPOSITORY),
branch=SOURCE_GIT_BRANCH
)
# Create a ShellStep for the synth action (BUT I DO NOT NEED THIS!!!)
synth_action = pipelines.ShellStep("Synth",
input=source_action.output,
commands=[])
# Create a new CodePipeline
pipeline = pipelines.CodePipeline(self, PIPELINE_NAME,
pipeline_name=PIPELINE_NAME,
synth=synth_action, # THIS IS NOT OPTIONAL!
self_mutation=False)
# Add the build stage
pipeline.add_stage(BuildStage(self, "Build"))
# Add the deploy stage
pipeline.add_stage(DeployStage(self, "Deploy", env=kwargs['env']))
问题是“synth”参数是必需的,但我绝对不需要它!我该怎么做才能让我的管道在没有“合成器”的情况下工作?我只需要源代码,然后是构建和部署阶段。
我错过了什么?
(顺便说一句,编译器抱怨上面的代码中“Build”操作已经存在,强调我不理解“Build”和“Synth”之间的区别...)
CodePipeline
中的 pipelines
包用于构建和部署 CDK 应用程序。这就是它使用合成步骤的原因。如果您想构建 docker 镜像并将其部署到 ECR
,您应该使用 Pipeline
包中的 aws_codepipeline
构造。查看文档了解更多详细信息。