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

使用Jenkins的Gitea/GitLab插件时出现Connection refused错误

Jenkins多分支流水线连接Gitea/GitLab分支源插件报Connection refused问题排查与解决

问题概况

在Jenkins 2.387.3版本的多分支流水线任务中,使用Gitea Jenkins插件连接Gitea实例时触发java.net.ConnectException: Connection refused错误;更换为GitLab Branch Source插件连接GitLab服务器时,同样出现该错误。

已知信息:

  • 凭据配置正确,使用普通Git作为分支源时无连接问题
  • Gitea插件初期可用,后续频繁报错;GitLab插件从配置阶段就无法正常工作
  • Jenkins、Gitea、GitLab均部署在Linux虚拟机的ufw防火墙后,已添加端口放行规则,曾禁用Jenkins所在机器防火墙后问题消失,但一周后即使禁用防火墙仍复现错误
  • 调整Jenkins全局构建超时等设置无效

报错日志

Started by user admin
Looking up repository Jangoo/hello_world
java.net.ConnectException: Connection refused (Connection refused)
    at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:412)
    at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:255)
    at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:237)
    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.base/java.net.Socket.connect(Socket.java:609)
    at java.base/sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:305)
    at java.base/sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:173)
    at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:182)
    at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:507)
    at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:602)
    at java.base/sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:266)
    at java.base/sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:373)
    at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:207)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1187)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1081)
    at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:193)
    at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:168)
    at org.jenkinsci.plugin.gitea.client.impl.DefaultGiteaConnection.getObject(DefaultGiteaConnection.java:860)
    at org.jenkinsci.plugin.gitea.client.impl.DefaultGiteaConnection.fetchRepository(DefaultGiteaConnection.java:200)
    at org.jenkinsci.plugin.gitea.GiteaSCMSource.retrieve(GiteaSCMSource.java:187)
    at jenkins.scm.api.SCMSource.fetch(SCMSource.java:581)
    at org.jenkinsci.plugins.workflow.multibranch.SCMBinder.create(SCMBinder.java:99)
    at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:312)
    at hudson.model.ResourceController.execute(ResourceController.java:101)
    at hudson.model.Executor.run(Executor.java:442)
Finished: FAILURE

排查与解决步骤

1. 底层网络连通性验证

先跳过Jenkins插件,直接测试服务器间的网络连接:

  • 在Jenkins服务器执行telnet <Gitea/GitLab服务器IP> <端口>(默认HTTPS端口为443),确认是否能建立TCP连接
  • 用API测试命令验证:
    • Gitea:curl -v -H "Authorization: token <你的Gitea令牌>" https://<Gitea地址>/api/v1/user
    • GitLab:curl -v -H "Authorization: Bearer <你的GitLab令牌>" https://<GitLab地址>/api/v4/user
  • 如果以上命令失败,说明是服务器间网络问题:
    • 检查Gitea/GitLab服务器的ufw规则,确认已放行Jenkins机器的IP访问对应端口
    • 用netstat -tulpn | grep <端口>确认Gitea/GitLab服务是否正常监听目标端口
    • 检查虚拟机的路由配置、IP是否有变更,或是否存在网络策略限制

2. Jenkins代理配置排查

  • 进入Manage Jenkins -> System Configuration,检查是否配置了HTTP代理,若有需确保No Proxy Hosts中添加了Gitea/GitLab的域名或IP
  • 也可在Jenkins启动参数(如/etc/default/jenkins)中添加-Dhttp.nonProxyHosts="<GiteaIP>|<GitLabIP>",重启Jenkins生效

3. 插件版本兼容性检查

  • Jenkins 2.387.3为LTS版本,确认Gitea插件和GitLab Branch Source插件的版本是否兼容:
    • 进入Manage Jenkins -> Plugins,查看插件的更新记录或文档,选择与当前Jenkins版本匹配的稳定版
    • 尝试降级或升级插件版本,排除版本冲突导致的连接逻辑异常

4. JVM网络参数调整

  • 检查Jenkins的JVM启动参数,是否存在影响网络连接的配置(如代理、SSL)
  • 添加-Djava.net.preferIPv4Stack=true到启动参数,避免IPv6解析异常导致的连接失败
  • 若使用自签SSL证书,需将证书导入Jenkins的JVM信任库(路径通常为$JAVA_HOME/lib/security/cacerts)

5. 系统连接数与端口检查

  • 用netstat -an | grep <Gitea/GitLab端口>查看当前连接状态,若存在大量TIME_WAIT连接,可调整TCP参数:
    • 执行sysctl -w net.ipv4.tcp_tw_reuse=1和sysctl -w net.ipv4.tcp_tw_recycle=1(需确认系统支持)
    • 检查net.ipv4.tcp_max_syn_backlog和net.core.somaxconn参数值,若过小则调高后生效

6. 插件配置重置

  • 删除当前的Gitea/GitLab分支源配置,重新创建,确保服务器URL、凭据、分支过滤规则等配置项无错误
  • 对于Gitea插件,若使用自签证书,勾选Skip certificate verification选项,避免证书验证失败阻断连接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 03:06:02