在 Azure DeVops 中为部署在 Kubernetes 上的 docker 个图像标记最佳实践

Tagging best practices in Azure DeVops for docker images deployed on Kubernetes

有没有人有构建和推送 docker 图像 + 通过 Azure DevOps 将它们部署到 AKS 的经验?

当我构建并推送图像时,我可以使用变量 $(Build.Repository.Name):$(Build.BuildId).

但是我的 .yaml 文件在我的发布管道中用于部署图像。我不能(或不知道如何)引用该变量 $(Build.Repository.Name):$(Build.BuildId).

有人有自动化这方面的经验吗?

如果您在发布管道上只有 1 个工件,那么您也可以在发布中以相同的方式使用变量 ($(Build.Repository.Name):$(Build.BuildId))。

如果您有超过 1 个工件,变量将引用您的主要工件:

如果你想将变量用于其他工件(不是主要的),你可以使用这种方式:

Release.Artifacts.{alias}.BuildId

{alias} 是工件的别名:

我是如何让它为我工作的是使用 "tokerisation of the yaml file"。

在构建过程中(构建并将图像推送到私有存储库,我使用 Azure Devops 中的默认变量 $(Build.BuidId) 作为 docker 图像的标记。

构建镜像任务

推送图片任务

在我引用的图像的部署 yaml 中:

然后在应用 yaml 文件之前进行部署,使用 kubectl 应用任务,我使用任务 "Replace tokens"。您可以指定要替换令牌的文件。由于我只为图像使用了令牌,所以我只选择了部署 yaml 文件。

它的作用是将 #{Release.Artifacts.acpyaml.BuildId}# 替换为上次构建的实际构建编号,因此当它开始拉取图像时,它具有正确的标签。

查看 Tokenised version of yaml

中描述的完整示例