我们所做的大部分工作就像我们在 多阶段 构建的最后一个推送步骤一样。 (我们也有相同的步骤来标记图像以消除混淆)
- 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 .
在 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']
它将 YAML 文件值替换为 docker 映像 的 URI,其中所有内容都来自 env 变量,并创建了泊坞窗图像路径。最后将整个 deployment.yaml 文件应用到 Kubernetes 集群。
如果您想使用特殊的提交哈希进行修补或部署,在这种情况下,您可以通过将值设置为 CI/CD 触发器并运行它来覆盖 SHORT_SHA 值。
因此,您的构建触发器将不断构建并将图像推送到注册表,并且只要您想部署,您就可以运行发布trigger 默认情况下,它将从 Git 中获取 latest commit hash 并将其设置为 环境变量。