GCP Cloud Run预览构建因缺失latest标签失败该如何解决
问题根因
你在link revision on pull request步骤的name字段中指定自定义构建器镜像时,没有显式声明镜像标签,Docker默认会自动补全:latest标签尝试拉取,因此出现了找不到latest标签的报错。
解决方案
场景1:deployment-previews自定义构建器需要跟随当前PR代码迭代
如果这个构建器的逻辑和业务代码放在同一个仓库,每次PR修改都需要同步更新构建器,你需要新增两步构建推送构建器的配置,并修改最后一步的镜像引用:
- 在现有构建步骤前新增自定义构建器的构建、推送步骤:
steps: # 新增的构建器构建步骤,放在现有步骤最前面 - id: "build custom preview builder" name: "gcr.io/cloud-builders/docker" args: [ "build", "-t", "$_GCR_HOSTNAME/${PROJECT_ID}/deployment-previews:${_PR_NUMBER}-${SHORT_SHA}", # 替换为你存放deployment-previews构建器Dockerfile的上下文路径 "./builder", ] - id: "push custom preview builder" name: "gcr.io/cloud-builders/docker" args: [ "push", "$_GCR_HOSTNAME/${PROJECT_ID}/deployment-previews:${_PR_NUMBER}-${SHORT_SHA}", ] # 你原来的build image、push image等步骤放在后面 ...
- 修改最后一步的
name字段,显式指定镜像标签:
- id: "link revision on pull request" name: "$_GCR_HOSTNAME/${PROJECT_ID}/deployment-previews:${_PR_NUMBER}-${SHORT_SHA}" args: [ "set", "--project-id", "${PROJECT_ID}", "--region", "${_REGION}", "--service", "${_SERVICE_NAME}", "--pull-request", "${_PR_NUMBER}", "--repo-name", "${_GITHUB_REPO}", "--commit-sha", "${SHORT_SHA}", ]
场景2:deployment-previews是固定的公共工具镜像
如果这个构建器的逻辑不需要跟随业务代码变动,你可以直接给构建器镜像打一个固定的版本标签(例如v1)推送到镜像仓库,然后在最后一步直接引用固定标签即可:
- id: "link revision on pull request" name: "$_GCR_HOSTNAME/${PROJECT_ID}/deployment-previews:v1" args: [...]
这种方案无需每次PR都重新构建构建器,构建效率更高。
自定义构建器定义查找路径
自定义构建器本质就是普通的Docker镜像,它的定义就是构建该镜像对应的Dockerfile,你可以在团队代码仓库中搜索deployment-previews关键词,或者咨询之前负责配置预览构建流程的同事获取对应的Dockerfile和构建逻辑。
内容的提问来源于stack exchange,提问作者Jan.
相关产品推荐
相关产品推荐

