Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-72317

Pipeline Snippet Generator does not work with step "recordCoverage: Record code coberage results" when logged user has permission to configure only jobs inside his project

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Minor Minor
    • coverage-plugin
    • None
    • coverage-plugin v1.3.0 / role-strategy-plugin v689.v731678c3e0eb_ / Jenkins v2.414.3 / Jenkins user with permission "Job>Configure" enabled on "Project roles" section but not on "Global roles" section

      When a Jenkins user (with permission "Job>Configure" enabled on "Project roles" section but not on "Global roles" section) select the step "recordCoverage: Record code coverage results" from a pipeline snippet generator page, the "Coverage Parser" drop-down list is empty: none of the 3 expected parsers (JaCoCo, Cobertura or PIT Mutation Testing) can therefore be selected.

      The warning below is displayed on Jenkins system log when the user still clic on the "Generate Pipeline Script" button.

      If the Jenkins user has the permission "Job>Configure" enabled on "Global roles" section (role-strategy-plugin), the drop-down list is populated with the 3 expected values and the "Generate Pipeline Script" button works as expected.

      But our Jenkins users should not be able to configure all jobs on the server. They should be able to configure only the jobs in their project (with permission "Job>Configure" enabled only on "Project roles" section).

      Would it be possible to fix this issue on coverage plugin, please?

      Full error log :

      nov. 13, 2023 1:17:20 PM WARNING org.eclipse.jetty.server.handler.ContextHandler$Context log
      Error while serving http://localhost:8082/pipeline-syntax/generateSnippet
      java.lang.IllegalArgumentException: No enum constant io.jenkins.plugins.coverage.metrics.steps.CoverageTool.Parser.
          at java.base/java.lang.Enum.valueOf(Enum.java:240)
          at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:823)
          at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:551)
          at org.kohsuke.stapler.RequestImpl.injectSetters(RequestImpl.java:938)
          at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:883)
          at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:768)
      Caused: java.lang.IllegalArgumentException: Failed to instantiate class io.jenkins.plugins.coverage.metrics.steps.CoverageTool from {"parser":"","pattern":"**/jacoco.xml"}
          at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:771)
          at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:551)
          at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:546)
          at hudson.model.Descriptor.bindJSON(Descriptor.java:622)
          at hudson.model.Descriptor.newInstance(Descriptor.java:592)
      Caused: java.lang.LinkageError: Failed to instantiate class io.jenkins.plugins.coverage.metrics.steps.CoverageTool from {"parser":"","pattern":"**/jacoco.xml"}
          at hudson.model.Descriptor.newInstance(Descriptor.java:595)
          at hudson.model.Descriptor$NewInstanceBindInterceptor.onConvert(Descriptor.java:693)
          at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:696)
          at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:807)
          at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:551)
          at org.kohsuke.stapler.RequestImpl.injectSetters(RequestImpl.java:938)
          at org.kohsuke.stapler.RequestImpl.instantiate(RequestImpl.java:883)
          at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:768)
          at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:551)
          at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:546)
          at hudson.model.Descriptor.bindJSON(Descriptor.java:622)
          at hudson.model.Descriptor.newInstance(Descriptor.java:592)
          at org.jenkinsci.plugins.workflow.cps.Snippetizer.doGenerateSnippet(Snippetizer.java:498)
          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.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:770)
          at org.kohsuke.stapler.Stapler.invoke(Stapler.java:900)
          at org.kohsuke.stapler.MetaClass$9.dispatch(MetaClass.java:475)
          at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:770)
          at org.kohsuke.stapler.Stapler.invoke(Stapler.java:900)
          at org.kohsuke.stapler.Stapler.invoke(Stapler.java:698)
          at org.kohsuke.stapler.Stapler.service(Stapler.java:248)
          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:163)
          at hudson.plugins.audit_trail.AuditTrailFilter.doFilter(AuditTrailFilter.java:88)
          at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:160)
          at io.jenkins.plugins.audit.filter.RequestContextFilter.doFilter(RequestContextFilter.java:52)
          at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:160)
          at jenkins.metrics.impl.MetricsFilter.doFilter(MetricsFilter.java:125)
          at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:160)
          at jenkins.util.HttpServletFilter$1.doFilter(HttpServletFilter.java:76)
          at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:160)
          at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:166)
          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:126)
          at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120)
          at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:99)
          at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100)
          at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:99)
          at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:110)
          at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:101)
          at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:99)
          at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:227)
          at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:221)
          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:117)
          at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
          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)
          at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:172)
          at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
          at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
          at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:53)
          at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
          at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
          at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:86)
          at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
          at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
          at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
          at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
          at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
          at jenkins.security.SuspiciousRequestFilter.doFilter(SuspiciousRequestFilter.java:38)
          at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
          at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
          at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527)
          at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131)
          at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:569)
          at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
          at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223)
          at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1570)
          at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)
          at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1384)
          at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)
          at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484)
          at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1543)
          at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174)
          at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1306)
          at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129)
          at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
          at org.eclipse.jetty.server.Server.handle(Server.java:563)
          at org.eclipse.jetty.server.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1598)
          at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:753)
          at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:501)
          at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:287)
          at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314)
          at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)
          at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
          at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:421)
          at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:390)
          at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:277)
          at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:199)
          at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:411)
          at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969)
          at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194)
          at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149)
          at java.base/java.lang.Thread.run(Thread.java:829)

            drulli Ulli Hafner
            eraimbau Eric RAIMBAULT
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: