使用 Docker 中心图像作为 Azure DevOps 发布管道的项目
Use Docker Hub image as artifact for Azure DevOps release pipeline
我为 Azure DevOps 创建了一个多阶段构建管道,将构建的映像推送到 Docker Hub。我现在正在尝试设置一个发布管道,该管道将使用该图像作为其构建工件。我已经使用我配置的服务连接设置了所有这些,并且 Azure 构建管道成功运行到完成,但我不知道如何在我使用例如kubectl 将该镜像推送到我的 Kubernetes 集群中。
我们主要在做什么,就像我们在 多阶段 构建的最后一个推送步骤一样。 (我们也有同样的步骤 标记图像 以消除混淆)
- 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-based[=46] =] 自动变量设置到 CI/CD.
在 release 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']
它用 docker 图像 的 URI 替换 YAML 文件值,其中所有内容都来自 环境变量并创建docker图像路径的结构。最后整个 deployment.yaml 文件都可以应用到 Kubernetes 集群。
incase 如果你想修补程序或部署一些特殊的提交散列在这种情况下你可以 overwrite SHORT_SHA
值通过将值设置为 CI/CD 触发器和 运行 它。
因此,您的构建触发器将持续 构建 并将图像推送到 注册表 以及您想要 部署的任何时候 你可以 运行 发布 触发器 默认情况下它将采用 最新的提交散列 来自 Git并设置为环境变量.
问题主要是我在 Docker 步骤中使用了 build
命令,而不是 buildAndPush
,因此在创建和标记图像时,它不是' t 被推送到存储库。一旦我解决了这个问题,发布管道就会正确地检查由 just-运行 构建管道创建的图像作为人工制品;我只是确保发布管道使用内部版本号作为发布号,然后很容易检索具有相同标签的图像。
由于经常发生,键盘和椅子之间存在问题。再次以清明的眼光和清醒的头脑重新审视,并试图向同事解释问题,让问题跳出屏幕。
我为 Azure DevOps 创建了一个多阶段构建管道,将构建的映像推送到 Docker Hub。我现在正在尝试设置一个发布管道,该管道将使用该图像作为其构建工件。我已经使用我配置的服务连接设置了所有这些,并且 Azure 构建管道成功运行到完成,但我不知道如何在我使用例如kubectl 将该镜像推送到我的 Kubernetes 集群中。
我们主要在做什么,就像我们在 多阶段 构建的最后一个推送步骤一样。 (我们也有同样的步骤 标记图像 以消除混淆)
- 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-based[=46] =] 自动变量设置到 CI/CD.
在 release 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']
它用 docker 图像 的 URI 替换 YAML 文件值,其中所有内容都来自 环境变量并创建docker图像路径的结构。最后整个 deployment.yaml 文件都可以应用到 Kubernetes 集群。
incase 如果你想修补程序或部署一些特殊的提交散列在这种情况下你可以 overwrite SHORT_SHA
值通过将值设置为 CI/CD 触发器和 运行 它。
因此,您的构建触发器将持续 构建 并将图像推送到 注册表 以及您想要 部署的任何时候 你可以 运行 发布 触发器 默认情况下它将采用 最新的提交散列 来自 Git并设置为环境变量.
问题主要是我在 Docker 步骤中使用了 build
命令,而不是 buildAndPush
,因此在创建和标记图像时,它不是' t 被推送到存储库。一旦我解决了这个问题,发布管道就会正确地检查由 just-运行 构建管道创建的图像作为人工制品;我只是确保发布管道使用内部版本号作为发布号,然后很容易检索具有相同标签的图像。
由于经常发生,键盘和椅子之间存在问题。再次以清明的眼光和清醒的头脑重新审视,并试图向同事解释问题,让问题跳出屏幕。