【发布时间】:2020-10-09 06:45:47
【问题描述】:
我有一个带有单个 JenkinsBuild.jk 设置的 CI/CD 管道,只要将拉取请求合并到主分支,就会自动触发该设置。
我在 JenkinsBuild 中有一堆命令,例如“docker build”和“docker push”,它们创建了 docker-images 的版本,例如:
x.36、x.37、x.38、x.39、x.40、x.41、x.42、x.43、x.44、x.45(添加前缀“x.”到删除未标记的图像)。
现在问题出现了,当我必须将这些 dockerImage 中的一部分部署到 prod 而不是全部部署时。示例 - x.36 、 x.40 和 x.45 是部署到 prod 和 rest 的图像,所有图像都用于非 prod 环境以测试代码。
当我应用以下 ECR 生命周期策略时,它会保留前 5 个图像,因此所有未部署到 prod 的版本也会被存储,而最近部署的版本将被删除。示例:前 5 个图像,即 x.41,x.42,x.43,x.44,x.45 存储在 ECR 中,最近的产品 dockerImages,即 x.36,x.40 由于以下策略( x. 45 没有被删除,因为它是前 5 个图像之一)。
{
"rulePriority": 1,
"description": "Keep last 5 images",
"selection": {
"tagStatus": "tagged",
"tagPrefixList": ["x."],
"countType": "imageCountMoreThan",
"countNumber": 5
},
"action": {
"type": "expire"
}
}
有人可以帮我 ECR 策略如何只能删除非产品 dockerImages 吗?
或
如何在 prod 部署期间使用 JenkinsDeploy.jk 覆盖 dockerImages 作为 p.36、p.40、p.45?
如果可以,请提出建议。感谢您阅读我的帖子。
【问题讨论】:
-
将图片推广到产品的标准是什么?还是手动过程?
-
36....41 , 42 ,43 ...,45 是内部版本号,基本上是 java jar 。因此,它的提升取决于构建是否通过且没有错误,是否具有完整的代码覆盖率等。它是手动升级的,因为需要部署的功能将在特定的构建版本中。
标签: docker lifecycle amazon-ecr