0

我想将具有两个不同标签的图像存储在 Google Container Registry$BRANCH_NAME-$REVISION_IDlatest

steps:
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '-t', 'gcr.io/$PROJECT_ID/myapp:$BRANCH_NAME-$REVISION_ID', '.']
- name: 'gcr.io/cloud-builders/docker'
  args: ['push', 'gcr.io/$PROJECT_ID/myapp:$BRANCH_NAME-$REVISION_ID']
images: ['gcr.io/$PROJECT_ID/myapp:$BRANCH_NAME-$REVISION_ID']

我可以用一个标签保存它,但是当我尝试添加第二个标签时它失败了。我收到以下错误

Finished Step #1
Starting Step #2
Step #2: Already have image (with digest): gcr.io/cloud-builders/docker
Step #2: The push refers to repository [gcr.io/myproject/myapp]
Step #2: tag does not exist: gcr.io/myproject/myapp:latest

我想这样做以确保我的 k8s 部署文件指向最新的图像。


更新

我能够做到

substitutions:
  _IMG_NAME: "myapp"

steps:

- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '-t', 'gcr.io/$PROJECT_ID/${_IMG_NAME}:$BRANCH_NAME-$REVISION_ID', '-t' , 'gcr.io/$PROJECT_ID/${_IMG_NAME}:latest', '.']
images: ['gcr.io/$PROJECT_ID/${_IMG_NAME}']
4

1 回答 1

2

我认为在创建 docker 映像时可以使用/设置一些标签。例如,可以使用类似的东西:

- name: 'gcr.io/cloud-builders/docker'
  env:
    - 'DOCKER_BUILDKIT=1'
  args:
    - build
    - --tag
    - gcr.io/$PROJECT_ID/myapp:$BRANCH_NAME-$REVISION_ID'
    - --tag
    - gcr.io/$PROJECT_ID/myapp:latest
    - .

我也猜想在您的情况下,其中一个docker pushimage应该就足够了。

于 2021-05-30T08:28:38.893 回答