如何解决如何在 Cloud Build 步骤失败后下载 Docker 镜像
我有一个包含以下步骤的 Cloud Build 配置:
- 构建 Docker 映像。
- 对该图像运行一些测试。
- 将映像推送到 Container Registry。
- 做更多的事情。
问题是构建在推送步骤(编号 3)失败。
有什么方法可以下载创建的 docker 镜像或更改第 3 步的命令 (args) 以便推送不会失败,以便我可以从第 3 步重试构建?
steps:
- name: 'gcr.io/cloud-builders/docker'
args: [
'build','--build-arg','base_image=${_DOCKER_BASE_IMAGE}','cuda=${_CUDA}','python_version=${_PYTHON_VERSION}','cloud_build=true','release_version=${_RELEASE_VERSION}','-t','gcr.io/aluminiumponey/xla:${_IMAGE_NAME}','-f','docker/Dockerfile','.'
]
timeout: 14400s
- name: 'gcr.io/cloud-builders/docker'
entrypoint: bash
args: ['-c','docker tag gcr.io/aluminiumponey/xla:${_IMAGE_NAME} gcr.io/repsmate/xla:${_IMAGE_NAME}_$(date -u +%Y%m%d)']
- name: 'gcr.io/cloud-builders/docker'
args: ['push','gcr.io/aluminiumponey/xla']
timeout: 1800s
- name: 'gcr.io/aluminiumponey/xla:${_IMAGE_NAME}'
entrypoint: 'bash'
args: ['-c','source /pytorch/xla/docker/common.sh && collect_wheels ${_RELEASE_VERSION}']
推送失败,因为我没有推送到 gcr.io 的权限。
解决方法
Cloud Build 是一个无服务器环境,它是短暂的。在构建结束时,环境被清理干净。所以,不,您无法在 Cloud Build 崩溃后获取容器
但是,您可以想象在第 1 步和第 2 步之间添加一个新步骤(将其命名为 1.5)以将图像推送到 Google Container Registry(或最新的 Google Artifact Registry)
,我同意 @Guillaume 关于 Cloud Build 在构建时间后的行为和处理图像的方式。此外,如果 Cloud Build 推送由于权限而在 Container Registry 上失败,那么您正在执行以下操作之一:
- 您在一个项目中使用服务帐号访问另一个项目中的 Container Registry
- 您使用的是对存储具有只读访问权限的默认服务帐户,但您希望同时拉取和推送图像
- 您正在使用自定义服务帐号与 Container Registry 交互
如果是这种情况,请确保您用于 Cloud Build 的服务帐号在 Container Registry 所在的项目中具有 Storage Admin
角色。
参考:
https://cloud.google.com/container-registry/docs/access-control#general
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。