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

Jenkins流水线Windows代理无法连接SonarQube服务器,请求技术排查

问题描述
  • 环境:独立SonarQube服务器(IP:10.xx.xx.999),Jenkins主节点将Sonar扫描任务分派给用于.NET应用的Windows代理节点,通过Jenkinsfile使用MSBuild运行Sonar扫描器。
  • 异常:构建任务触发Sonar扫描时,控制台显示尝试从http://xx.x.xx.999:9000/api/server/version获取版本信息,抛出503服务不可用错误。
  • 矛盾点:在Jenkins代理节点上手动执行以下操作均正常:
    • PowerShell运行Test-NetConnection连接SonarQube服务器成功
    • ping和curl命令可正常连通服务器
    • 直接访问http://xx.x.xx.999:9000/api/server/version能正常返回内容
    • 命令行手动执行Sonar扫描任务完全成功
排查方向与解决方案

1. 检查Jenkins代理进程的运行上下文

Windows代理节点上的Jenkins服务可能以Local System或其他非当前登录用户身份运行,不同用户的网络代理配置、权限或环境变量存在差异:

  • 打开服务管理器,找到Jenkins代理服务,查看「登录」选项卡的用户账户。
  • 将服务运行用户改为你手动操作时使用的账户,重启代理服务后重新触发构建测试。

2. 验证MSBuild扫描器的环境变量

Jenkins流水线中的MSBuild扫描器可能继承了异常的网络环境变量,导致请求被拦截:

  • 在Jenkinsfile中添加步骤打印环境变量:
    Get-ChildItem Env: | Format-Table Name, Value
    
  • 重点检查HTTP_PROXY、HTTPS_PROXY、NO_PROXY变量,确认NO_PROXY是否包含SonarQube服务器的IP,避免代理转发请求。

3. 排查SonarQube服务器的临时负载问题

503错误通常表示服务暂时过载,Jenkins触发扫描时服务器可能处于高负载状态:

  • 查看SonarQube服务器的日志文件(sonar.log、web.log),检查扫描触发时间段是否有连接池耗尽、线程过载等异常记录。
  • 调整SonarQube的web服务配置:在sonar.properties中修改sonar.web.http.maxThreads参数,提升并发处理能力,重启服务器后测试。

4. 核对Jenkins中的Sonar配置正确性

  • 检查Jenkinsfile中Sonar扫描器的服务器URL配置,确认是否存在拼写错误(注意控制台显示的http://xx.x.xx.999:9000与实际服务器IP10.xx.xx.999是否一致,可能存在IP输入错误)。
  • 确认Jenkins全局配置中SonarQube服务器的URL、令牌等信息正确,且代理节点能正常访问该配置地址。

5. 检查防火墙/安全软件的进程拦截

部分防火墙或终端安全软件会根据进程身份拦截网络请求,Jenkins代理进程(通常是java.exe)的请求可能被拦截:

  • 查看代理节点的防火墙日志,确认是否有Jenkins代理进程被拦截的记录。
  • 临时关闭终端安全软件,重新触发构建验证是否恢复正常,若正常则添加Jenkins代理进程到安全软件的信任列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 09:35:26