github - GCP:由于缺少“最新”标签,Cloud Run 预览版构建失败
问题描述
如果有云构建无法创建用于 github 拉取请求的预览构建的问题。
我有
- 安装了云构建应用程序的 github 组织。
- 带有触发器的云构建设置以部署到云运行
- 基于主部署的功能构建(在这里并不重要)。
以下是我的cloudbuild-preview.yaml
文件。失败的步骤是最后一步:“拉取请求上的链接修订”
steps:
- id: "build image"
name: "gcr.io/cloud-builders/docker"
args:
[
"build",
"-t",
"$_GCR_HOSTNAME/${PROJECT_ID}/${_SERVICE_NAME}:${_PR_NUMBER}-${SHORT_SHA}",
".",
]
- id: "push image"
name: "gcr.io/cloud-builders/docker"
args:
[
"push",
"$_GCR_HOSTNAME/${PROJECT_ID}/${_SERVICE_NAME}:${_PR_NUMBER}-${SHORT_SHA}",
]
- id: "deploy revision with tag"
name: "gcr.io/google.com/cloudsdktool/cloud-sdk"
entrypoint: "gcloud"
args:
[
"beta",
"run",
"deploy",
"${_SERVICE_NAME}",
"--platform",
"managed",
"--region",
"${_REGION}",
"--image",
"$_GCR_HOSTNAME/${PROJECT_ID}/${_SERVICE_NAME}:${_PR_NUMBER}-${SHORT_SHA}",
"--tag",
"pr-${_PR_NUMBER}",
"--no-traffic",
]
- id: "link revision on pull request"
name: "$_GCR_HOSTNAME/${PROJECT_ID}/deployment-previews" # our custom builder
args:
[
"set",
"--project-id",
"${PROJECT_ID}",
"--region",
"${_REGION}",
"--service",
"${_SERVICE_NAME}",
"--pull-request",
"${_PR_NUMBER}",
"--repo-name",
"${_GITHUB_REPO}",
"--commit-sha",
"${SHORT_SHA}",
]
timeout: 1400s
options:
machineType: N1_HIGHCPU_8
substitutions:
_GCR_HOSTNAME: eu.gcr.io
_SERVICE_NAME: redacted-service
_REGION: europe-west4
_GITHUB_REPO: $(pull_request.pull_request.head.repo.full_name)
执行失败
Step #3 - "link revision on pull request": Error response from daemon: manifest for eu.gcr.io/redacted-org/deployment-previews:latest not found: manifest unknown: Failed to fetch "latest" from request "/v2/redacted-org/deployment-previews/manifests/latest".
Step #3 - "link revision on pull request": Using default tag: latest
Step #3 - "link revision on pull request": Pulling image: eu.gcr.io/redacted-org/deployment-previews
Starting Step #3 - "link revision on pull request"
我不明白的是为什么 sep 甚至在寻找 :latest 标签。空无一人。上述步骤不会创建一个。容器注册表不包含一个。如何告诉构建步骤使用标记为的正确图像${_PR_NUMBER}-${SHORT_SHA}
?我在哪里可以潜入这里的魔法?这个神奇的构建步骤的定义在哪里?!
非常感谢您的任何想法。
解决方案
当您不指定图像标签时,工具将始终尝试拉取:latest
图像。在 Cloud Build 中,您只需在构建步骤的名称中包含标签即可指定构建器映像的特定版本:
- id: "link revision on pull request"
name: "$_GCR_HOSTNAME/${PROJECT_ID}/deployment-previews:${_PR_NUMBER}-${SHORT_SHA}" # our custom builder
args:
[
"set",
"--project-id",
"${PROJECT_ID}",
"--region",
"${_REGION}",
"--service",
"${_SERVICE_NAME}",
"--pull-request",
"${_PR_NUMBER}",
"--repo-name",
"${_GITHUB_REPO}",
"--commit-sha",
"${SHORT_SHA}",
]
推荐阅读
- windows - 如何设置通过 DllSurrogate 加载的 COM 类的 DPI 感知
- c# - 用于元组的 IEqualityComparer
- javascript - 调用 Javascript 函数作为原始数据类型(特别是数字)
- node.js - 使用 id 更新用户角色的 API - 节点
- list - 没有逗号的 Haskell 列表语法是什么意思?
- flask - 在单击提交按钮之前,如何“随时随地”验证电子邮件的完整性?
- swift - Firebase 身份验证 swiftui
- c++ - 如何通过对异步场景的多层调用有效地转移 unique_ptr 所有权
- python - 如何将 avro 文件转换为 json 文件,该文件最初是通过邮递员通过 Azure 事件中心作为原始 json 发送的?
- authentication - 如何在多个 API 之间使用相同的凭据处理身份验证