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

Cannot save credentials in this store without getting an SSL error - and could not resolve that SSL error #12

      Jenkins and plugins versions report
      Environment
      What Operating System are you using (both controller, and any agents involved in the problem)?
      Centos 7
      Java 11

      Reproduction steps
      No reproduction - Plugin itself giving issues. Creating a credential in plugin and saving it should save it. On the backlog it gives this error - Our controller and agents are configured properly with SSL certificates. Openshift environment can be accessed from Unix client from OC with tokens. Not sure how to fix this so the SSL path issues are resolved.

      This also creates notifications in manage jenkins website and there is not a way to acknowledge for teh notification to go away. at one point, we had over 1000 notifications, which went away after a restart (from the backend) of Jenkins.
      sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
      at java.base/sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
      at java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
      at java.base/java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297)
      at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:434)
      Caused: sun.security.validator.ValidatorException: PKIX path building failed
      at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:439)
      at java.base/sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:306)
      at java.base/sun.security.validator.Validator.validate(Validator.java:264)
      at java.base/sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:313)
      at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:222)
      at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:129)
      at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:638)
      Caused: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
      at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131)
      at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:349)
      at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:292)
      at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:287)
      at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:654)
      at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate(CertificateMessage.java:473)
      at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume(CertificateMessage.java:369)
      at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:392)
      at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:443)
      at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:421)
      at java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:182)
      at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:172)
      at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1426)
      at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1336)
      at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:450)
      at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:421)
      at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:320)
      at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.java:284)
      at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:169)
      at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:258)
      at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135)
      at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114)
      at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
      at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
      at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
      at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:127)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
      at io.fabric8.kubernetes.client.okhttp.OkHttpClientBuilderImpl$InteceptorAdapter.intercept(OkHttpClientBuilderImpl.java:62)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
      at io.fabric8.kubernetes.client.okhttp.OkHttpClientBuilderImpl$InteceptorAdapter.intercept(OkHttpClientBuilderImpl.java:62)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
      at io.fabric8.kubernetes.client.okhttp.OkHttpClientBuilderImpl$InteceptorAdapter.intercept(OkHttpClientBuilderImpl.java:62)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
      at io.fabric8.kubernetes.client.okhttp.OkHttpClientBuilderImpl$InteceptorAdapter.intercept(OkHttpClientBuilderImpl.java:62)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
      at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:257)
      at okhttp3.RealCall.execute(RealCall.java:93)
      at io.fabric8.kubernetes.client.okhttp.OkHttpClientImpl.send(OkHttpClientImpl.java:138)
      at io.fabric8.kubernetes.client.dsl.base.OperationSupport.retryWithExponentialBackoff(OperationSupport.java:574)
      at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:553)
      at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:518)
      at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:502)
      at io.fabric8.kubernetes.client.dsl.base.BaseOperation.listRequestHelper(BaseOperation.java:133)
      Caused: io.fabric8.kubernetes.client.KubernetesClientException: Operation: [list] for kind: [Secret] with name: [null] in namespace: [null] failed.
      at io.fabric8.kubernetes.client.KubernetesClientException.launderThrowable(KubernetesClientException.java:130)
      at io.fabric8.kubernetes.client.dsl.base.BaseOperation.listRequestHelper(BaseOperation.java:140)
      at io.fabric8.kubernetes.client.dsl.base.BaseOperation.list(BaseOperation.java:415)
      at io.fabric8.kubernetes.client.dsl.base.BaseOperation.list(BaseOperation.java:404)
      at io.fabric8.kubernetes.client.dsl.base.BaseOperation.list(BaseOperation.java:83)
      at com.cloudbees.jenkins.plugins.kubernetes_credentials_provider.KubernetesCredentialProvider.startWatchingForSecrets(KubernetesCredentialProvider.java:116)
      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.base/java.lang.reflect.Method.invoke(Method.java:566)
      at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:109)
      at hudson.init.TaskMethodFinder$TaskImpl.run(TaskMethodFinder.java:185)
      at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:305)
      at jenkins.model.Jenkins$5.runTask(Jenkins.java:1156)
      at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:222)
      at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:121)
      at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
      at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
      at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
      at java.base/java.lang.Thread.run(Thread.java:829)
      Jenkins 2.332.1

      Expected Results
      Tokens saved without errors

      Actual Results
      Tokens not saved, except we get this error
      sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
      at java.base/sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
      at java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
      at java.base/java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297)
      at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:434)
      Caused: sun.security.validator.ValidatorException: PKIX path building failed
      at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:439)
      at java.base/sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:306)
      at java.base/sun.security.validator.Validator.validate(Validator.java:264)
      at java.base/sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:313)
      at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:222)
      at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:129)
      at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:638)
      Caused: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
      at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131)
      at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:349)
      at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:292)
      at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:287)
      at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:654)
      at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate(CertificateMessage.java:473)
      at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume(CertificateMessage.java:369)
      at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:392)
      at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:443)
      at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:421)
      at java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:182)
      at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:172)
      at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1426)
      at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1336)
      at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:450)
      at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:421)
      at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:320)
      at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.java:284)
      at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:169)
      at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:258)
      at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135)
      at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114)
      at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
      at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
      at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
      at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:127)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
      at io.fabric8.kubernetes.client.okhttp.OkHttpClientBuilderImpl$InteceptorAdapter.intercept(OkHttpClientBuilderImpl.java:62)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
      at io.fabric8.kubernetes.client.okhttp.OkHttpClientBuilderImpl$InteceptorAdapter.intercept(OkHttpClientBuilderImpl.java:62)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
      at io.fabric8.kubernetes.client.okhttp.OkHttpClientBuilderImpl$InteceptorAdapter.intercept(OkHttpClientBuilderImpl.java:62)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
      at io.fabric8.kubernetes.client.okhttp.OkHttpClientBuilderImpl$InteceptorAdapter.intercept(OkHttpClientBuilderImpl.java:62)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
      at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
      at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:257)
      at okhttp3.RealCall.execute(RealCall.java:93)
      at io.fabric8.kubernetes.client.okhttp.OkHttpClientImpl.send(OkHttpClientImpl.java:138)
      at io.fabric8.kubernetes.client.dsl.base.OperationSupport.retryWithExponentialBackoff(OperationSupport.java:574)
      at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:553)
      at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:518)
      at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:502)
      at io.fabric8.kubernetes.client.dsl.base.BaseOperation.listRequestHelper(BaseOperation.java:133)
      Caused: io.fabric8.kubernetes.client.KubernetesClientException: Operation: [list] for kind: [Secret] with name: [null] in namespace: [null] failed.
      at io.fabric8.kubernetes.client.KubernetesClientException.launderThrowable(KubernetesClientException.java:130)
      at io.fabric8.kubernetes.client.dsl.base.BaseOperation.listRequestHelper(BaseOperation.java:140)
      at io.fabric8.kubernetes.client.dsl.base.BaseOperation.list(BaseOperation.java:415)
      at io.fabric8.kubernetes.client.dsl.base.BaseOperation.list(BaseOperation.java:404)
      at io.fabric8.kubernetes.client.dsl.base.BaseOperation.list(BaseOperation.java:83)
      at com.cloudbees.jenkins.plugins.kubernetes_credentials_provider.KubernetesCredentialProvider.startWatchingForSecrets(KubernetesCredentialProvider.java:116)
      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.base/java.lang.reflect.Method.invoke(Method.java:566)
      at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:109)
      at hudson.init.TaskMethodFinder$TaskImpl.run(TaskMethodFinder.java:185)
      at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:305)
      at jenkins.model.Jenkins$5.runTask(Jenkins.java:1156)
      at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:222)
      at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:121)
      at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
      at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
      at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
      at java.base/java.lang.Thread.run(Thread.java:829)
      Jenkins 2.332.1

      Anything else?
      No response

      ---- Response from Openshift k8s Plugin github -----------

       

      Are you sure it's related to this plugin ? This plugin is only an extension of the kubernetes-credentials-provider-plugin to support openshift client credentials

      Looking at the stacktrace it come from kubernetes-credentials-provider-plugin that cannot watch secret an the current namespace.
       com.cloudbees.jenkins.plugins.kubernetes_credentials_provider.KubernetesCredentialProvider.startWatchingForSecrets(KubernetesCredentialProvider.java:116)
       
       

          [JENKINS-69479] Cannot save credentials in this store without getting an SSL error - and could not resolve that SSL error #12

          Max Laverse added a comment -

          Hi pgajaana ,

          This plugin doesn't do anything specific regarding certificates and uses whatever is configured for the JVM (or by Jenkins). I don't know what kind of certificate Openshift is using sadly.

           

          When I tried to add a credential using this plugin. the "add credential" button is not showing up.

          This plugin doesn't have and doesn't control any UI. What do you mean by "adding credentials using this plugin" ?

          Max Laverse added a comment - Hi pgajaana , This plugin doesn't do anything specific regarding certificates and uses whatever is configured for the JVM (or by Jenkins). I don't know what kind of certificate Openshift is using sadly.   When I tried to add a credential using this plugin. the "add credential" button is not showing up. This plugin doesn't have and doesn't control any UI. What do you mean by "adding credentials using this plugin" ?

          Joe added a comment - - edited

          Hi Max, 

          One of the other issue is that log reporting is coming on Manage Jenkins UI, rather than log itself.  As a result, we are getting more than 1000 logs in Manage Jenkins console, and it keeps growing. Is it possible to redirect to system logs or just leave it at one log? 

           

          Other than solving the SSL issue, this is a major heart burner. 

          Joe added a comment - - edited Hi Max,  One of the other issue is that log reporting is coming on Manage Jenkins UI, rather than log itself.  As a result, we are getting more than 1000 logs in Manage Jenkins console, and it keeps growing. Is it possible to redirect to system logs or just leave it at one log?    Other than solving the SSL issue, this is a major heart burner. 

          Max Laverse added a comment -

          I assume the logs end up as notification like for any other plugin.

          I'm actually starting to understand where some confusion is coming from. I think you opened the issue with the wrong project. Could it be that you're using the https://plugins.jenkins.io/kubernetes-credentials-provider/ and not https://plugins.jenkins.io/kubernetes-credentials/ ?

          Max Laverse added a comment - I assume the logs end up as notification like for any other plugin. I'm actually starting to understand where some confusion is coming from. I think you opened the issue with the wrong project. Could it be that you're using the https://plugins.jenkins.io/kubernetes-credentials-provider/ and not https://plugins.jenkins.io/kubernetes-credentials/ ?

          Joe added a comment -

          HI, 

          Thank you for reaching out. Other plugins  logs but in the backend system log. If they do show up in Manage Jenkins UI, it is not this way taking entire the mange jenkins UI console.  There is no way to clear the logs too. It is kind of frustrating restarting Jenkins to get the logs to go away. 

           

          Also, I first opened a ticket (github issue) with kubernetes credential provider, however they closed the issue redirecting here. 

          Joe added a comment - HI,  Thank you for reaching out. Other plugins  logs but in the backend system log. If they do show up in Manage Jenkins UI, it is not this way taking entire the mange jenkins UI console.  There is no way to clear the logs too. It is kind of frustrating restarting Jenkins to get the logs to go away.    Also, I first opened a ticket (github issue) with kubernetes credential provider, however they closed the issue redirecting here. 

          Max Laverse added a comment -

          Can you re-open an issue with kubernetes-credentials-provider-plugin as component instead ?

          Max Laverse added a comment - Can you re-open an issue with kubernetes-credentials-provider-plugin as component instead ?

          Joe added a comment -

          Hi, I have added Kubernetes credential provider as a component here for this issue

          Joe added a comment - Hi, I have added Kubernetes credential provider as a component here for this issue

          Max Laverse added a comment -

          You'll need to assign the ticket to the right maintainer by hand then.

          Max Laverse added a comment - You'll need to assign the ticket to the right maintainer by hand then.

          Joe added a comment -

          I changed to James Nord, who is listed first

          Joe added a comment - I changed to James Nord, who is listed first

          James Nord added a comment -

          Java does not trust the SSL certificate that your kubernetes API server is using.  

          this is not an issue with the kubernetes-credential-providier plugin, but with either your JVM configuration or your kubernetes API server.

          Additionally the kubernetes-credential-provider-plugin does not support saving credentials from the Jenkins UI.

          James Nord added a comment - Java does not trust the SSL certificate that your kubernetes API server is using.   this is not an issue with the kubernetes-credential-providier plugin, but with either your JVM configuration or your kubernetes API server. Additionally the kubernetes-credential-provider-plugin does not support saving credentials from the Jenkins UI.

          James Nord added a comment -

          platform issue

          James Nord added a comment - platform issue

            Unassigned Unassigned
            pgajaana Joe
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: