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

Gitlab CI流水线推送代码报错remote: You are not allowed to upload code.如何解决

解决GitLab CI流水线提交代码报错"remote: You are not allowed to upload code."方案

方案一:使用项目访问令牌(推荐)

  • 生成项目访问令牌
    进入GitLab项目页,依次打开「设置」→「访问令牌」,创建新令牌:
    • 名称自定义,例如CI_PUSH_TOKEN
    • 勾选write_repository权限
    • 按需设置有效期,生成后复制保存令牌值,仅会显示一次
  • 配置令牌到CI变量
    进入项目「设置」→「CI/CD」→「变量」,新增变量:
    • 键设为CI_PUSH_TOKEN,值填写刚才生成的令牌
    • 勾选「保护变量」「掩码变量」,防止令牌泄露
  • 修改CI Job中的Git远程配置
    在执行push操作的Job开头,添加以下命令注入认证信息:
    git remote set-url origin "https://gitlab-ci-token:${CI_PUSH_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git"
    用到的CI_SERVER_HOST、CI_PROJECT_PATH均为GitLab内置CI变量,无需额外配置。

方案二:使用SSH部署密钥

  • 本地生成无密码的SSH密钥对
  • 进入项目「设置」→「仓库」→「部署密钥」,上传生成的公钥,勾选「授予写入权限」
  • 将私钥内容配置为CI变量,键名设为SSH_PRIVATE_KEY,勾选「保护变量」「掩码变量」
  • 在执行push操作的Job开头,添加SSH密钥加载步骤:
    eval $(ssh-agent -s)
    echo "${SSH_PRIVATE_KEY}" | tr -d '\r' | ssh-add -
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    ssh-keyscan ${CI_SERVER_HOST} >> ~/.ssh/known_hosts
    chmod 644 ~/.ssh/known_hosts
    

配套注意事项

  • 若要推送的是保护分支,需要进入项目「设置」→「仓库」→「保护分支」,给所用的令牌/部署密钥开放对应分支的推送权限
  • 提交前建议先配置Git用户信息,避免提交异常:
    git config user.name "GitLab CI Automation"
    git config user.email "ci@your-domain.com"
  • 提交时添加-o ci.skip参数,避免本次提交触发新的流水线导致循环执行:
    git commit -m "chore: update LAST_EXECUTED_SHA_ID" -o ci.skip

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 23:12:02