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

使用gitlab-ci-token和$CI_BUILD_TOKEN登录$CI_REGISTRY遇授权错误求解决

修复GitLab CI Docker登录认证失败问题

排查及解决步骤

  • 验证CI系统变量是否正常注入
    在CI任务中先添加变量打印步骤,确认$CI_BUILD_TOKEN和$CI_REGISTRY的有效性:

    echo "CI_REGISTRY地址: $CI_REGISTRY"
    echo "CI_BUILD_TOKEN是否存在: $(test -n "$CI_BUILD_TOKEN" && echo "是" || echo "否")"
    

    如果CI_BUILD_TOKEN为空,或者CI_REGISTRY指向了registry-1.docker.io而非GitLab镜像仓库,说明项目CI/CD变量被自定义同名变量覆盖,需进入项目Settings > CI/CD > Variables删除冲突的自定义变量。

  • 检查Runner权限状态
    系统生成的CI_BUILD_TOKEN是临时令牌,依赖Runner的项目访问权限:

    • 进入项目Settings > CI/CD > Runners,确认所用Runner处于激活状态,且未被移除项目访问权限。
    • 若使用共享Runner,检查GitLab实例的共享Runner配置是否有变更。
  • 清理Docker缓存的认证信息
    Runner节点缓存的旧认证可能干扰新登录,在登录命令前添加清理步骤:

    docker logout $CI_REGISTRY || true
    docker logout https://registry-1.docker.io || true
    

    再重新执行登录命令,确保使用新令牌完成认证。

  • 检查GitLab Registry服务状态
    偶尔GitLab官方Registry会出现临时故障,可在任务中测试连通性:

    curl -I $CI_REGISTRY/v2/
    

    若返回5xx类错误,说明是服务端问题,等待官方恢复即可。

  • 排查自托管Runner环境
    如果用的是自托管Runner,确认Docker版本是否兼容GitLab CI要求,过旧版本可能存在认证协议兼容问题,尝试升级Docker到稳定版。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:02:00