CodePipeline:taskdef.json 和 appsec.yaml 的目的是什么?

CodePipeline : What is taskdef.json and appsec.yaml purpose?

我使用 CodePipeline 的全部意义在于使用 CodeDeploy 自动部署 ECS 服务(蓝/绿部署)。

CodePipeline 具有以下阶段:

我不明白的是 taskdef.json 和 appsec.yaml 对我而言的目的。

我仅手动执行的操作(因此当前没有 CodePipeline)是使用相同的任务定义重新部署 ECS 服务。我真的不必每次都更新我的任务定义,因为我推送的 docker 图像始终具有相同的标签(暂存或生产),所有其他图像都未标记,因此只有一个可用。

那么为什么必须输入这些文件,即使我手动输入时也没有更改任何东西,只是连续单击“下一步”?

另外,我如何将它包含在 CodeBuild 步骤中?

在您的管道上,您可以使用 AWS CodeCommit 输入 taskdef.json 文件以及 appspec.yml。在每次部署时,CodePipeline 都会获取最新的可用输入。

例如,您更改了环境变量值。 taskdef.json 文件。您需要做的是使用 taskdef.json 的新版本推送提交。这将触发新的部署,使用新的 taskdef.json,并使用带有您在 CodePipilie/CodeDeploy 上指定的标签的最新 ECR 映像。

本教程介绍了如何将它们组合在一起:https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-ecs-ecr-codedeploy.html

我终于找到了怎么做。我首先做的是在我的 Git 项目中包含一个 taskdef.json 和 appspec.yaml 文件。因为我不需要那些文件“自动更新”或“生成”,所以我只是把我最后一个任务定义放在 JSON 中,然后把它放在 taskdef.json.

对于 appspec.yaml,您可以在 ECS 服务上手动部署时以 JSON 格式获取它,在总结所有内容的最后一页。

然后您需要更新 CodeBuild 项目以在 S3 上上传两个工件,然后在管道中,Deploy 任务可以使用这些工件。

这个 site 帮助我很好地设置了一切。