-
Bug
-
Resolution: Fixed
-
Critical
-
None
-
Jenkins 2.489
Docker plugin 1.7.0
Docker Java API plugin 3.4.0-94.v65ced49b_a_7d5
-
-
3.4.0-95.v80b_75fd32678
When a docker container is built by the docker-plugin using the build and publish step, it fails on Jenkins 2.489 or newer with a class not found exception for commons compress. The sample Pipeline I used to show the problem is:
pipeline { agent { label 'docker' } stages { stage('Build container') { steps { sh "echo 'FROM jenkins/jenkins:lts' > Dockerfile" step([$class: 'DockerBuilderPublisher', cloud: 'mark-pc2', dockerFileDirectory: '.', pushOnSuccess: false, tagsString: 'my-image']) } } } }
That assumes a Docker cloud named 'mark-pc2'. It fails with the stack trace:
Caused: java.lang.NoClassDefFoundError: org/apache/commons/compress/archivers/ArchiveEntry at PluginClassLoader for docker-java-api//com.github.dockerjava.core.dockerfile.Dockerfile$ScannedResult.buildDockerFolderTar(Dockerfile.java:134) at PluginClassLoader for docker-java-api//com.github.dockerjava.core.dockerfile.Dockerfile$ScannedResult.buildDockerFolderTar(Dockerfile.java:124) at PluginClassLoader for docker-plugin//com.nirima.jenkins.plugins.docker.builder.DockerBuilderPublisher$DockerBuildCallable.invoke(DockerBuilderPublisher.java:495) at PluginClassLoader for docker-plugin//com.nirima.jenkins.plugins.docker.builder.DockerBuilderPublisher$DockerBuildCallable.invoke(DockerBuilderPublisher.java:491) at Jenkins v2.489//hudson.FilePath$FileCallableWrapper.call(FilePath.java:3593) at hudson.remoting.UserRequest.perform(UserRequest.java:225) at hudson.remoting.UserRequest.perform(UserRequest.java:50) at hudson.remoting.Request$2.run(Request.java:391) at hudson.remoting.InterceptingExecutorService.lambda$wrap$0(InterceptingExecutorService.java:81) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583)
Workaround
Install the incremental build of the docker Java API plugin.,