0

如何在 Cloud Build 中使用自定义构建器映像,该映像存储在 Artifact Registry(而不是 Container Registry)的存储库中?

我在 Cloud Build 中设置了一个管道,其中一些 python 代码使用官方 python 图像执行。因为我想缓存我的 python 依赖项,所以我想创建一个自定义 Cloud Builder,如官方文档中所示

GCP 明确表示要切换到 Artifact Registry,因为 Container Registry 将被前者取代。因此,我已将我的 docker 镜像推送到 Artifact Registry。我还向我的 Cloud Builder 服务帐户授予了 Artifact Registry 的读取权限。

在这样的 Cloud Build 步骤中使用图像

steps:
  - name: 'europe-west3-docker.pkg.dev/xxxx/yyyy:latest'
    id: install_dependencies
    entrypoint: pip
    args: ["install", "-r", "requirements.txt", "--user"]

引发以下错误

步骤#0 - “install_dependencies”:拉取镜像:europe-west3-docker.pkg.dev/xxxx/yyyy:latest 步骤#0 - “install_dependencies”:来自守护进程的错误响应:europe-west3-docker.pkg.dev 的清单/xxxx/yyyy:latest not found: manifest unknown: 未找到请求的实体。

“xxxx”是存储库名称,“yyyy”是我的图像的名称。标签“最新”存在。我可以在本地提取图像并访问存储库。

我找不到任何关于如何从 Artifact Registry 集成这些图像的文档。只有这个官方指南,其中镜像是使用 Container Registry 中的 Docker 镜像构建的——但这不应该是未来的证明。

4

1 回答 1

0

看起来您需要将您的项目 ID 添加到您的图像名称中。您可以使用“$PROJECT_ID”Cloud Build 默认替换变量。因此,您更新后的图像名称将如下所示:

steps:
  - name: 'europe-west3-docker.pkg.dev/$PROJECT_ID/xxxx/yyyy:latest'

如需详细了解如何在 Cloud Build 中替换变量值,请参阅:

https://cloud.google.com/build/docs/configuring-builds/substitute-variable-values

于 2021-11-22T02:15:13.267 回答