不带 Synth/ShellStep 的 AWS CDK CodePipeline

问题描述 投票:0回答:1

我的 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”之间的区别...)

amazon-web-services amazon-ecs aws-cdk aws-codepipeline amazon-ecr
1个回答
0
投票

CodePipeline
中的
pipelines
包用于构建和部署 CDK 应用程序。这就是它使用合成步骤的原因。如果您想构建 docker 镜像并将其部署到
ECR
,您应该使用
Pipeline
包中的
aws_codepipeline
构造。查看文档了解更多详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.