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

如何配置GitLab CI Shell Runner,使推送归属Runner专属用户?

解决GitLab CI Shell Runner推送显示实例管理员的问题

核心原因

部署密钥本身没有独立用户身份,GitLab会把部署密钥的操作归属到创建该密钥的用户(即你提到的实例管理员)。你设置的全局提交作者信息只是Git提交记录里的作者标识,和GitLab Activity显示的推送者身份是两回事——推送者身份由GitLab识别的操作账号决定。

解决方法

方法1:创建专属服务用户并关联SSH密钥

  • 在GitLab实例中新建一个专门的服务用户(比如ci-runner-bot),给该用户分配目标仓库的写入权限。
  • 在Runner主机上,切换到Runner执行作业的用户(通常是gitlab-runner),生成专属SSH密钥对:
    sudo -u gitlab-runner ssh-keygen -t ed25519 -C "ci-runner-bot@your-domain.com"
    
  • 将生成的公钥添加到这个服务用户的SSH密钥列表中(不是仓库的部署密钥)。
  • 在.gitlab-ci.yml中明确设置提交身份,和服务用户信息保持一致:
    before_script:
      - git config user.name "ci-runner-bot"
      - git config user.email "ci-runner-bot@your-domain.com"
    
    完成后,推送操作的归属就会显示为这个专属服务用户。

方法2:用项目访问令牌替代部署密钥

  • 进入仓库「设置」→「访问令牌」,创建一个项目访问令牌,勾选write_repository权限并设置过期时间。
  • 在CI/CD变量中添加该令牌,命名为CI_PROJECT_TOKEN。
  • 在CI作业里改用HTTPS方式推送,通过令牌认证:
    git remote set-url origin https://gitlab-ci-token:${CI_PROJECT_TOKEN}@gitlab.example.com/your-group/your-project.git
    git push origin your-branch
    
    这种方式下,推送者会显示为Project Bot(或你给令牌设置的自定义名称),不会关联到实例管理员。

方法3:修改部署密钥的关联用户(需管理员权限)

  • 若你是GitLab实例管理员,可进入仓库「设置」→「仓库」→「部署密钥」,找到目标密钥后编辑,将其关联用户改为你创建的专属服务用户。
    此方法无需重新生成密钥,但仅限管理员操作。

注意事项

  • 提交记录的作者信息(user.name/user.email)和GitLab Activity显示的推送者是两个独立概念,前者仅存于Git提交中,后者由GitLab的操作账号身份决定。
  • 避免用实例管理员身份执行CI推送,防止权限过大和身份混淆。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:01:05