使用 Docker Hub 映像作为 Azure DevOps 发布管道的工件

时间:2021-04-19 04:16:21

标签: docker azure-devops azure-devops-pipelines

我为 Azure DevOps 创建了一个多阶段构建管道,将构建的映像推送到 Docker Hub。我现在正在尝试建立一个发布管道,该管道将使用该图像作为其构建工件。我已经使用我配置的服务连接设置了所有这些,并且 Azure 构建管道成功运行到完成,但我不知道当我使用时如何引用工件,例如kubectl 将该映像推送到我的 Kubernetes 集群中。

2 个答案:

答案 0 :(得分:0)

我们所做的主要是在多阶段构建的最后一步进行。 (我们也有相同的步骤来标记图片以消除混淆)

- id: 'push the docker image to registry'
  name: 'gcr.io/cloud-builders/docker'
  args: ['push', 'gcr.io/$PROJECT_ID/$REPO_NAME/$BRANCH_NAME:$SHORT_SHA']

我们目前正在使用 GCR。

所以当构建被推送注册表时,它会创建一个基于URI的自动变量设置到CI/CD中.

发布 CI/CD 触发器中,我们以同样的方式将映像与环境变量一起推送到 Kubernetes 集群。

- id: 'set docker image URI in YAML file'
  name: 'ubuntu'
  args: ['bash','-c','sed -i "s,DOCKER_IMAGE_NAME,gcr.io/$PROJECT_ID/$REPO_NAME/$BRANCH_NAME:$SHORT_SHA," deployment.yaml']

它将 YAML 文件值替换为 docker 映像URI,其中所有内容都来自 env 变量,并创建了泊坞窗图像路径。最后整个 deployment.yaml 文件可以应用到 Kubernetes 集群。

如果您想在这种情况下使用特殊的提交哈希进行修补或部署,您可以通过将值设置为 CI/CD 触发器并运行它来覆盖 SHORT_SHA 值。

因此,您的构建触发器将不断构建并将图像推送到注册表,并且只要您想部署,就可以运行发布< strong>trigger 默认情况下,它将从 Git 获取最新提交哈希,并将其设置为环境变量

答案 1 :(得分:0)

问题主要是我在 Docker 步骤中使用了 build 命令,而不是 buildAndPush,因此在创建和标记图像时,它没有被推送到存储库.一旦我解决了这个问题,发布管道就会正确地检查由刚刚运行的构建管道创建的图像作为人工制品;我只是确保发布管道使用版本号作为发布号,然后用相同的标签检索图像是孩子的游戏。

由于经常发生,键盘和椅子之间存在问题。用新鲜的眼光和清醒的头脑再看一遍,并试图向同事解释问题,却让问题从屏幕上跳到我面前。

相关问题