【问题标题】:How does CodePipeline's ECR source action detect a change to an image in ECR?CodePipeline 的 ECR 源操作如何检测 ECR 中图像的更改?
【发布时间】:2022-08-12 23:55:58
【问题描述】:

我正在使用 Amazon ECR 源设置管道以进行 ECS 部署。一直按照tutorial here 中的步骤操作。

我的问题是,当我的私人 ECR 使用 docker 映像更新时,管道不会被触发。我没有申请最新的图像上的标记,仅使用包含内部版本号和简短 Git 提交哈希的语义版本控制标记,例如:

  1. 我的服务器:b21-6d22b379a
  2. 我的服务器:b20-c90b134a
  3. 等..

    在 ECR 源操作的 Image Tag 选项中,它显示:选择在映像存储库中发生更改时触发您的管道的映像标记.

    如果我将其留空并仅指定 ECR 存储库名称,例如我的服务器, 只有当最新的标签在 ECR 中移动到具有不同 SHS 摘要的另一个图像?

    或者它是否足够聪明,可以根据时间戳+新图像的摘要,即使图像没有最新的标签应用?

    我想避免使用最新的图像标签,与 ECS Fargate 集群一样,我的理解是一个新容器将简单地提取最新标签,而不管 CodeDeploy 是否发布了带有新图像标签的新任务定义。

    那么如何在 ECR 源操作中指定图像和标签,如果不使用最新的在 ECR 中的 docker 图像上标记?从 ECR 到 ECS 的自动部署是否需要使用固定标签才能工作?

    标签: amazon-ecs aws-codepipeline aws-code-deploy amazon-ecr


    【解决方案1】:

    根据https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference-ECR.html#action-reference-ECR-config

    如果未指定 ImageTag 的值,则该值默认为 latest

    因此,如果您将“ImageTag”留空,则只会部署带有“最新”标签的图像。

    是的,它需要一个固定标签才能进行部署。因此,标签的使用受到限制 - 例如,您可以使用标签来确保特定图像仅部署在特定环境中(例如,标记为“staging”的图像部署在 staging 环境中,而标记为“production”的图像得到部署在生产环境中) - 但您不能动态使用标签。

    【讨论】:

      猜你喜欢
      • 2021-01-25
      • 2019-06-05
      • 2021-10-30
      • 2020-10-30
      • 1970-01-01
      • 2020-02-29
      • 2020-07-14
      • 2020-05-09
      • 2019-07-18
      相关资源
      最近更新 更多