如何在使用ECR源管道时向CodeDeploy提供AppSpec和任务定义

4

我想要在ECR镜像更新时触发蓝/绿色ECS部署。部署阶段需要三个输入构件:imageDetail.jsonappspec.jsontaskdef.json

创建管道时,我选择ECR仓库作为源,这样就创建了一个imageDetail.json SourceArtifact(源构件),这很清楚。稍后,在构建阶段,我可以将其放入输出构件中。

我完全不知道如何提供另外两个文件?我应该将它们内联到构建阶段定义的buildspec.yaml中吗(它们非常大,内联看起来很繁琐),还是从CodeCommit获取它们(到目前为止,我认为我可以在不设置CodeCommit的情况下完成这项工作)?

通常提供这些文件的做法是什么?

1个回答

2

将文件直接存储在源代码中意味着它们无法进行动态管理;AWS肯定提供了一种检索生成的构建工件作为ECS输入的方法吧?将它们存储在源代码中似乎是一个变通方法。例如,如果在图像标签中使用语义化版本控制,则Image URI可能会发生更改,您是否要在每次版本更改时更新源代码中的文件(这实际上是不可行的,因为这将触发管道中的另一个构建)。除非我漏掉了什么? - OneMoreNerd
1
这个想法是,“imageDetail.json”将作为构建过程的一部分动态生成,即创建图像、标记/推送它,然后在创建“imageDetail.json”工件时使用相同的标记。问题中提到的另外两个文件(appspec/taskdef)将保持静态,不经常更改,并将检入源代码。 - shariqmaws
好的。但是以taskdef.json为例,如果标签在更新后递增,那么它所引用的镜像URI肯定不能是静态的。我认为可以使用占位符,例如 "image": "<IMAGE_NAME>",然后可以通过imageDetail.json中的ImageURI值进行覆盖。你也这样理解吗? - OneMoreNerd
是的,那是正确的。在这个教程中也使用了taskdef中的占位符方法:https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-ecs-ecr-codedeploy.html - shariqmaws

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接