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

GitLab中从project1流水线推送镜像至project2容器仓库遇权限拒绝

GitLab跨项目推送镜像权限问题解决

这个操作完全可行,报错"denied: requested access to the resource is denied"的核心原因是权限配置不到位:

默认的CI_REGISTRY_USER和CI_REGISTRY_PASSWORD是project1流水线的内置凭据,仅能访问project1自身的容器仓库,没有权限操作project2的仓库资源。

解决步骤如下:

  1. 在project2创建访问令牌
    优先用项目级访问令牌(比个人令牌更安全):进入project2的「设置」→「访问令牌」,创建一个令牌,勾选read_registry和write_registry权限,保存生成的用户名和令牌值(令牌只显示一次,务必记好)。

  2. 在project1添加CI/CD变量
    进入project1的「设置」→「CI/CD」→「变量」,添加两个变量:

    • PROJECT2_REGISTRY_USER:填入project2访问令牌的用户名
    • PROJECT2_REGISTRY_PASSWORD:填入刚才生成的令牌值,勾选「掩码」防止泄露。
  3. 修改project1的.gitlab-ci.yml脚本
    把登录命令替换成用project2的凭据登录,修改后的脚本部分如下:

    script:
        - docker login -u "$PROJECT2_REGISTRY_USER" -p "$PROJECT2_REGISTRY_PASSWORD" gitlab.com:5050
        - docker build -t gitlab.com:5050/groupname/project2/pythonapp .
        - docker push gitlab.com:5050/groupname/project2/pythonapp
    
  4. 额外检查项

    • 确认project2的容器仓库没有设置严格的访问限制,允许该令牌对应的账户访问
    • 核对镜像标签中的groupname、project2名称是否拼写正确

内容的提问来源于stack exchange,提问作者sandesh b nataraj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 13:16:11