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

Jenkins无法连接GitLab问题求助(附异常堆栈日志)

Jenkins与GitLab连接失败问题

操作步骤

  • 创建GitLab Token,尝试以下GitLab主机地址均无法连接:
    • https://gitlab.com
    • https://gitlab.com/username
    • https://gitlab.com/username/repository
  • 安装插件:GitLab API插件、GitLab插件、Git插件、GitLab认证插件
  • 将GitLab Token添加至Jenkins凭证
  • 在GitLab配置区域关联该Token

错误现象

点击「测试连接」时失败,Jenkins日志关键异常堆栈如下:

2023-03-01 19:39:16.358+0000 [id=13]    WARNING o.e.j.s.h.ContextHandler$Context#log: Error while serving http://34.204.61.XXX:8080/manage/descriptorByName/com.dabsquared.gitlabjenkins.connection.GitLabConnection/testConnection
java.lang.IllegalArgumentException: RESTEASY003900: Unable to find a public constructor for provider class org.glassfish.jersey.jackson.internal.DefaultJacksonJaxbJsonProvider
        at org.jboss.resteasy.spi.ResteasyProviderFactory.createConstructorInjector(ResteasyProviderFactory.java:2844)
        at org.jboss.resteasy.spi.ResteasyProviderFactory.createProviderInstance(ResteasyProviderFactory.java:2833)
        at org.jboss.resteasy.spi.ResteasyProviderFactory.addMessageBodyReader(ResteasyProviderFactory.java:1068)
        at org.jboss.resteasy.spi.ResteasyProviderFactory.registerProvider(ResteasyProviderFactory.java:1841)
Caused: java.lang.RuntimeException: RESTEASY003940: Unable to instantiate MessageBodyReader
        at org.jboss.resteasy.spi.ResteasyProviderFactory.registerProvider(ResteasyProviderFactory.java:1846)
        at org.jboss.resteasy.spi.ResteasyProviderFactory.register(ResteasyProviderFactory.java:3065)
        at org.jboss.resteasy.spi.ResteasyProviderFactory.register(ResteasyProviderFactory.java:123)
        at org.jboss.resteasy.util.FeatureContextDelegate.register(FeatureContextDelegate.java:52)
        at org.jboss.resteasy.util.FeatureContextDelegate.register(FeatureContextDelegate.java:12)
        at org.glassfish.jersey.jackson.JacksonFeature.configure(JacksonFeature.java:107)
        at org.jboss.resteasy.spi.ResteasyProviderFactory.registerProviderInstance(ResteasyProviderFactory.java:2605)
        at org.jboss.resteasy.spi.ResteasyProviderFactory.registerProviderInstance(ResteasyProviderFactory.java:2233)
        at org.jboss.resteasy.spi.ResteasyProviderFactory.register(ResteasyProviderFactory.java:3036)
        at org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder.register(ResteasyClientBuilder.java:617)
        at com.dabsquared.gitlabjenkins.gitlab.api.impl.ResteasyGitLabClientBuilder.buildClient(ResteasyGitLabClientBuilder.java:141)
        at com.dabsquared.gitlabjenkins.gitlab.api.impl.ResteasyGitLabClientBuilder.buildClient(ResteasyGitLabClientBuilder.java:92)
        at com.dabsquared.gitlabjenkins.gitlab.api.impl.AutodetectingGitLabClient.autodetect(AutodetectingGitLabClient.java:378)
        at com.dabsquared.gitlabjenkins.gitlab.api.impl.AutodetectingGitLabClient.autodetectOrDie(AutodetectingGitLabClient.java:368)
        at com.dabsquared.gitlabjenkins.gitlab.api.impl.AutodetectingGitLabClient.delegate(AutodetectingGitLabClient.java:361)
        at com.dabsquared.gitlabjenkins.gitlab.api.impl.AutodetectingGitLabClient$GitLabOperation.execute(AutodetectingGitLabClient.java:397)
        at com.dabsquared.gitlabjenkins.gitlab.api.impl.AutodetectingGitLabClient.execute(AutodetectingGitLabClient.java:391)
        at com.dabsquared.gitlabjenkins.gitlab.api.impl.AutodetectingGitLabClient.getCurrentUser(AutodetectingGitLabClient.java:306)
        at com.dabsquared.gitlabjenkins.connection.GitLabConnection$DescriptorImpl.doTestConnection(GitLabConnection.java:259)
        at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:710)
        at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:397)
Caused: java.lang.reflect.InvocationTargetException
        at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:401)
        at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:409)
        at org.kohsuke.stapler.interceptor.RequirePOST$Processor.invoke(RequirePOST.java:78)
        at org.kohsuke.stapler.PreInvokeInterceptedFunction.invoke(PreInvokeInterceptedFunction.java:26)
        at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:207)
        at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:140)
        at org.kohsuke.stapler.MetaClass$11.doDispatch(MetaClass.java:558)
        at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:59)
        at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:762)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:894)
        at org.kohsuke.stapler.MetaClass$4.doDispatch(MetaClass.java:289)
        at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:59)
        at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:762)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:894)
        at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:830)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:894)
        at org.kohsuke.stapler.MetaClass$9.dispatch(MetaClass.java:475)
        at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:762)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:894)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:690)
        at org.kohsuke.stapler.Stapler.service(Stapler.java:240)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:590)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:764)
        at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1665)
        at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:157)
        at jenkins.telemetry.impl.UserLanguages$AcceptLanguageFilter.doFilter(UserLanguages.java:129)
        at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154)
        at jenkins.security.ResourceDomainFilter.doFilter(ResourceDomainFilter.java:81)
        at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154)
        at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:160)
        at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
        at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
        at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:154)
        at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
        at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:94)
        at jenkins.security.AcegiSecurityExceptionFilter.doFilter(AcegiSecurityExceptionFilter.java:52)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:99)
        at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:54)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:99)
        at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122)
        at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:99)
        at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:99)
        at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:106)
        at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:97)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:99)
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:223)
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:217)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:99)
        at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:97)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:99)
        at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:112)
        at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82)
        at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:63)
        at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:99)
        at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:111)

注:完整堆栈日志更长,推测首行异常信息是问题关键

额外信息

  • Jenkins部署在AWS EC2实例的Docker容器中
  • EC2入站/出站规则已开放22、80、8080、443端口,允许所有来源访问

解决建议

1. 修正GitLab主机地址

连接GitLab.com时,正确的主机地址应为https://gitlab.com,无需添加用户名或仓库路径。带路径的地址会导致API请求定位错误,仅填写根域名即可。

2. 排查插件版本冲突

日志中Unable to find a public constructor for provider class org.glassfish.jersey.jackson.internal.DefaultJacksonJaxbJsonProvider异常,说明Jackson相关依赖存在版本冲突,这通常由Jenkins插件不兼容导致:

  • 卸载已安装的所有GitLab相关插件,清理Jenkins插件缓存后,重新安装最新稳定版的GitLab插件(无需单独安装GitLab API插件,GitLab插件已包含必要依赖)
  • 检查Jenkins核心版本与GitLab插件的兼容性,确保核心版本满足插件最低要求

3. 优化Docker部署配置

如果使用自定义Jenkins镜像,尝试更换官方LTS镜像(如jenkins/jenkins:lts),避免镜像内存在依赖冲突。启动容器时确保正确挂载插件目录,防止依赖文件损坏。

4. 验证Token权限

确认GitLab Token拥有api、read_user权限,这是Jenkins与GitLab进行API交互的必要权限。生成Token后重新添加到Jenkins凭证中,确保凭证类型选择「Secret text」。

5. 测试容器内网络连通性

进入Docker容器内部,执行curl https://gitlab.com/api/v4/user -H "PRIVATE-TOKEN: <你的Token>",验证是否能正常返回用户信息,排除容器内代理、DNS解析等网络层面问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:09:57