You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitLab CI/CD中用GCP服务账号访问Artifact Registry私有镜像

解决方案

1. 生成适用于GitLab CI的Docker认证配置

GitLab CI环境无法直接使用GCP的gcloud凭证助手,必须生成包含实际认证信息的config.json:

  • 下载你的GCP服务账号JSON密钥文件(命名为service-account-key.json)
  • 执行以下命令完成登录,生成正确的认证配置:
    cat service-account-key.json | docker login -u _json_key --password-stdin toto-tata-docker.pkg.dev
    
  • 登录成功后,打开本地的~/.docker/config.json,复制整个JSON内容(此时内容会包含针对目标镜像仓库的auth条目,而非credHelpers):
    {
      "auths": {
        "toto-tata-docker.pkg.dev": {
          "auth": "xxxxxxxxxxxxxx..."
        }
      }
    }
    

2. 给服务账号配置必要权限

作业报错权限拒绝,说明你的服务账号缺少artifactregistry.repositories.downloadArtifacts权限:

  • 登录GCP控制台,找到对应的服务账号
  • 为其分配Artifact Registry Reader角色(roles/artifactregistry.reader),该角色包含拉取镜像所需的全部权限
  • 也可以更精细地直接添加artifactregistry.repositories.downloadArtifacts单独权限

3. 在GitLab中配置CI/CD变量

  • 进入你的GitLab项目,依次打开Settings > CI/CD > Variables
  • 添加名为DOCKER_AUTH_CONFIG的变量,将刚才复制的config.json内容粘贴到Value字段
  • 保存变量后,重新触发CI作业即可正常拉取私有镜像

内容的提问来源于stack exchange,提问作者tbridel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 03:50:17