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

Source code cant be zipped in kubernetes plugin containers

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Minor Minor
    • coverage-plugin
    • None

      I get the following error when using recordCoverage inside an build container from the Kubernetes plugin.

      recordCoverage(tools: [[parser: 'COBERTURA', pattern: 'coverage/cobertura-coverage.xml']], sourceDirectories: [[path: '.']])
      

      The error log:
      The error shows that the Coverage Plugin has no permission to write into /home/jenkins/agent/workspace/my-project_develop/coverage/ directory.
      My guess is, that the plugin tries to write into the folder on the Master Node, where the directory does not exist, and not the Build Agent Container.

      [Coverage] [-ERROR-] Errors during source code painting:
      [Coverage] [-ERROR-] Can't write coverage paint of 'src/components/TokenErrors.tsx' to zipped source file '/home/jenkins/agent/workspace/my-project_develop/coverage/src_components_TokenErrors.tsx.zip'
      [Coverage] [-ERROR-] java.nio.file.AccessDeniedException: /home/jenkins/agent/workspace/my-project_develop/coverage/src_components_Publish_TokenErrors.tsx.zip
      [Coverage] [-ERROR-] 	at java.base/sun.nio.fs.UnixException.translateToIOException(Unknown Source)
      [Coverage] [-ERROR-] 	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(Unknown Source)
      [Coverage] [-ERROR-] 	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(Unknown Source)
      [Coverage] [-ERROR-] 	at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(Unknown Source)
      [Coverage] [-ERROR-] 	at java.base/java.nio.file.spi.FileSystemProvider.newOutputStream(Unknown Source)
      [Coverage] [-ERROR-] 	at java.base/java.nio.file.Files.newOutputStream(Unknown Source)
      [Coverage] [-ERROR-] 	at Jenkins v2.521//hudson.FilePath.write(FilePath.java:2486)
      [Coverage] [-ERROR-] 	at Jenkins v2.521//hudson.FilePath.zip(FilePath.java:417)
      [Coverage] [-ERROR-] 	at PluginClassLoader for coverage//io.jenkins.plugins.coverage.metrics.source.SourceCodePainter$AgentCoveragePainter.paint(SourceCodePainter.java:219)
      [Coverage] [-ERROR-] 	at PluginClassLoader for coverage//io.jenkins.plugins.coverage.metrics.source.SourceCodePainter$AgentCoveragePainter.lambda$paintSource$1(SourceCodePainter.java:196)
      [Coverage] [-ERROR-] 	at java.base/java.util.Optional.map(Unknown Source)
      [Coverage] [-ERROR-] 	at PluginClassLoader for coverage//io.jenkins.plugins.coverage.metrics.source.SourceCodePainter$AgentCoveragePainter.paintSource(SourceCodePainter.java:196)
      [Coverage] [-ERROR-] 	at PluginClassLoader for coverage//io.jenkins.plugins.coverage.metrics.source.SourceCodePainter$AgentCoveragePainter.lambda$invoke$0(SourceCodePainter.java:158)
      [Coverage] [-ERROR-] 	at java.base/java.util.stream.ReferencePipeline$4$1.accept(Unknown Source)
      [Coverage] [-ERROR-] 	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source)
      [Coverage] [-ERROR-] 	at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
      [Coverage] [-ERROR-] 	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
      [Coverage] [-ERROR-] 	at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(Unknown Source)
      [Coverage] [-ERROR-] 	at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(Unknown Source)
      [Coverage] [-ERROR-] 	at java.base/java.util.stream.AbstractTask.compute(Unknown Source)
      [Coverage] [-ERROR-] 	at java.base/java.util.concurrent.CountedCompleter.exec(Unknown Source)
      [Coverage] [-ERROR-] 	at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
      [Coverage] [-ERROR-] 	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
      [Coverage] [-ERROR-] 	at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
      [Coverage] [-ERROR-] 	at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
      [Coverage] [-ERROR-] 	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)
      

      Minimal Jenkinsfile:

      podTemplate(containers: [
          containerTemplate(
              name: 'jnlp',
              image: 'jenkins/inbound-agent:latest'
          ),
          containerTemplate(
              name: 'node',
              image: 'node:20',
              command: 'sleep',
              args: '99d'
          )
      ]) {
          node(POD_LABEL) {
              container('node') {
                  // Have some code producing `coverage/cobertura-coverage.xml` and its source
      
                  recordCoverage(tools: [[parser: 'COBERTURA', pattern: 'coverage/cobertura-coverage.xml']], sourceDirectories: [[path: '.']])
              }
          }
      }
      

            drulli Ulli Hafner
            tt_kkaiser Kevin
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: