You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu系统EC2实例中GitLab Runner注销失败求助

解决GitLab Runner注销时的"Unregistering runner from GitLab forbidden"错误

你遇到的这个forbidden错误,本质是GitLab服务器拒绝了你的注销请求,大概率是参数错误、权限验证或者版本兼容问题导致的,下面给你几个针对性的解决步骤:

1. 先确认Token和URL绝对正确

手动复制参数时很容易出现空格、字符遗漏这类低级错误,这是最常见的诱因:

  • 直接去GitLab项目的「Settings → CI/CD → Runners」页面,找到目标Runner,复制它的注册令牌GitLab实例URL
  • 或者直接读取EC2实例上的Runner配置文件,路径是/etc/gitlab-runner/config.toml,里面的urltoken字段是最准确的参数,直接用这两个值替换命令中的占位符再执行:
    sudo gitlab-runner --debug unregister --token 配置文件里的token --url 配置文件里的url
    

2. 检查Runner是否已被注销

如果这个Runner已经在GitLab后台被移除,再执行注销命令就会触发这个错误。去GitLab的Runner列表确认一下,要是目标Runner已经不在列表里,直接清理本地配置即可,无需再执行注销命令。

3. 用本地配置文件直接注销(更可靠的方式)

依赖Token和URL的注销方式偶尔会有校验问题,你可以直接指定本地配置文件,通过Runner名称来注销:

sudo gitlab-runner unregister --config /etc/gitlab-runner/config.toml --name "你的Runner名称"

要是还是不行,直接编辑/etc/gitlab-runner/config.toml,删掉对应Runner的整个配置块,然后重启Runner服务生效:

sudo systemctl restart gitlab-runner

4. 处理版本兼容性问题

你的GitLab Runner版本是13.1.1,属于比较老的版本,如果你的GitLab服务器版本比这个高很多(比如当前主流的16.x系列),会存在API兼容性差异,导致注销请求被拒绝。建议升级Runner到和GitLab服务器匹配的版本:

  1. 先停止Runner服务:
    sudo systemctl stop gitlab-runner
    
  2. 下载对应版本的安装包(比如GitLab服务器是16.0.0,就下载同版本的Runner):
    curl -LJO "https://gitlab-runner-downloads.s3.amazonaws.com/v16.0.0/deb/gitlab-runner_amd64.deb"
    
  3. 安装下载的包:
    sudo dpkg -i gitlab-runner_amd64.deb
    
  4. 重启服务:
    sudo systemctl start gitlab-runner
    

升级完成后再尝试执行注销命令。

5. 验证网络和基础权限

确保你的EC2实例能正常访问GitLab的URL,比如用curl测试:

curl -I https://gitlab.com

如果返回正常的HTTP状态码(比如200),说明网络没问题;另外用sudo执行命令是正确的,因为GitLab Runner的配置文件需要root权限才能访问。

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

火山引擎 最新活动