在 CircleCI 中使用来自 Artifact Registry 的私有图像

Using a private image from Artifact Registry in CircleCI

我正在尝试使用 CircleCI 设置 CI/CD,我希望我的管道的基础图像是自定义的 CI/CD 图像,它位于 Artifact Registry 中。在为工作提取基本图像时,我无法弄清楚如何正确验证 CircleCI。

我已经查看了两个 CirlceCI docs for authenticated pulls and the Artifact Registry 文档以进行身份​​验证,但我不知道如何将这两个拼图组合在一起。似乎 CircleCI 需要某种密码或访问密钥,而 Artifact Registry 需要 glcoud 直接 docker 配置(gcloud auth configure-docker)访问令牌生成或交互式 docker 登录(cat KEY-FILE | docker login -u KEY-TYPE --password-stdin \ https://LOCATION-docker.pkg.dev ).

如何使用 Artifact Registry 中的私有 docker 图像作为 CircleCI 中作业的基础?

想通了:

  1. 从云控制台创建服务帐户 json 密钥
  2. 使用步骤 1 中创建的密钥在 CircleCI 中创建名为 GOOGLE_APPLICATIONS_CREDENTIALS 的项目级机密
  3. 将以下配置放入您的 CircleCI yaml 文件中:
    docker:
      - image: us-west1-docker.pkg.dev/<PROJECT>/<REPOSITORY>/<IMAGE>
        auth:
          username: _json_key
          password: $GOOGLE_APPLICATION_CREDENTIALS

如果您对服务帐户密钥进行 base64 编码,请使用 _json_key_base64 作为用户名。请注意,密码是我们在步骤 2 中创建的秘密的名称。