我有一个分支的云构建触发器,用于构建 docker 映像并用最新映像替换组中的 vm 实例,我知道在我们推送到 github 的某个时间之前,它用新实例替换了 vm 实例,并且容器内的代码已更新,但它不再发生了。它总是落后一个更新,所以为了改变我们需要再次运行触发器来更新。
[steps:
- name: gcr.io/cloud-builders/docker
args: [ build, -t, gcr.io/$PROJECT_ID/$_APP_NAME, . ]
- name: gcr.io/cloud-builders/gcloud
args: [ compute, instance-groups, managed, rolling-action, replace, $_INSTANCE_GROUP_NAME, --region=$_INSTANCE_GROUP_REGION , --max-unavailable=0, --max-surge=3]
images:
- gcr.io/$PROJECT_ID/$_APP_NAME]
我试着在步骤之间放一个“sleep 60”,还写了一个脚本来删除图像,但结果还是一样。
对于所有有类似问题的人: 这个想法是图像被标记和构建,但它在所有步骤之后被上传并推送到注册表,所以虚拟机实例使用的是过时的图像。 要解决这个问题,您需要添加一个将图像推送到注册表的步骤 像这样的东西:
step 1...
- name: gcr.io/cloud-builders/docker
args: [ push, gcr.io/$PROJECT_ID/$_APP_NAME]
step 3...