如何将自定义 Cloud Builders 与来自 Google Artifact Repository 的图像一起使用

Posted

技术标签:

【中文标题】如何将自定义 Cloud Builders 与来自 Google Artifact Repository 的图像一起使用【英文标题】:How to use custom Cloud Builders with images from Google Artifact Repository 【发布时间】:2021-12-30 07:43:36 【问题描述】:

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

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

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 的清单:未找到最新的:清单未知:未找到请求的实体。

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

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

【问题讨论】:

【参考方案1】:

您似乎需要将您的项目 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

【讨论】:

以上是关于如何将自定义 Cloud Builders 与来自 Google Artifact Repository 的图像一起使用的主要内容,如果未能解决你的问题,请参考以下文章

如何将自定义响应标头添加到来自 azure blob 的响应?

将自定义元数据设置为 Google Cloud Storage 中的对象

如何将自定义视图添加到 iOS VoiceOver 转子?

如何将自定义视图插入 XML 的 LinearLayout

如何将自定义参数与保留事件一起发送到 Firebase 分析

React Apollo 和 Redux:将自定义 reducer 与 Apollo 状态相结合