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

GitLab Runner与GitLab外部URL端口不匹配致流水线作业失败求解决方案

解决GitLab Runner流水线提示端口80仓库未找到的问题

问题根源

GitLab的external_url配置为80端口,但实际服务运行在82端口。Runner注册时虽然用了82端口的地址,但流水线执行时,GitLab会基于external_url生成仓库克隆地址并下发给Runner,导致Runner尝试访问未提供服务的80端口,最终报错。

可行解决方案

方案1:修正GitLab的external_url配置(推荐)

  • 编辑GitLab主配置文件:
    sudo vi /etc/gitlab/gitlab.rb
    
  • 修改external_url为实际服务地址:
    external_url "http://git.ideep.apasaico.local:82"
    
  • 重新配置并重启GitLab服务:
    sudo gitlab-ctl reconfigure
    sudo gitlab-ctl restart
    
    此方案让GitLab直接下发正确的带82端口的克隆地址,从根源解决问题。

方案2:在Runner主机配置端口转发

在Runner主机(101.987.654.321)上通过iptables将80端口请求转发至82端口:

# 添加转发规则
sudo iptables -t nat -A PREROUTING -d 123.456.789.101 -p tcp --dport 80 -j REDIRECT --to-port 82
# 保存规则,确保重启后生效
sudo iptables-save | sudo tee /etc/iptables/rules.v4

如果使用ufw防火墙,可替换为:

sudo ufw allow 80/tcp
sudo ufw route add redirect proto tcp from any to 123.456.789.101 port 80 to 123.456.789.101 port 82

此方案无需修改GitLab配置,通过端口转发兼容旧的80端口请求。

方案3:修改Runner配置强制指定克隆地址

  • 编辑Runner配置文件:
    sudo vi /etc/gitlab-runner/config.toml
    
  • 在对应Runner的[[runners]]段落中添加clone_url字段:
    [[runners]]
      name = "你的Runner名称"
      url = "http://git.ideep.apasaico.local:82/"
      token = "你的Runner令牌"
      executor = "shell" # 根据实际执行器修改,如docker、kubernetes等
      clone_url = "http://git.ideep.apasaico.local:82/"
    
  • 重启GitLab Runner服务:
    sudo gitlab-runner restart
    
    此方案让Runner忽略GitLab下发的克隆地址,强制使用指定的82端口地址拉取代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 09:01:06