使用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:
- 如果以上命令失败,说明是服务器间网络问题:
- 检查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
相关产品推荐
相关产品推荐

