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

Docker build step tries to build on master and not slave

      When running a Docker build step create image command on a slave it tries to run it on the master

      21:15:04 Building remotely on pollux (twins) in workspace /var/lib/jenkins/workspace/oracle-java7/jenkins-slave-docker
      ...
      21:15:11 FATAL: configured dockerFolder '/var/lib/jenkins/workspace/oracle-java7/jenkins-slave-docker/' does no exist.
      21:15:11 java.lang.IllegalArgumentException: configured dockerFolder '/var/lib/jenkins/workspace/oracle-java7/jenkins-slave-docker/' does no exist.
      21:15:11 	at org.jenkinsci.plugins.dockerbuildstep.cmd.CreateImageCommand.execute(CreateImageCommand.java:85)
      21:15:11 	at org.jenkinsci.plugins.dockerbuildstep.DockerBuilder.perform(DockerBuilder.java:65)
      

      Manually creating the workspace on master, and it goes one step further

      22:52:40 FATAL: configured dockerFolder '/var/lib/jenkins/workspace/oracle-java7/jenkins-slave-docker' does not contain a Dockerfile.
      22:52:40 java.lang.IllegalArgumentException: configured dockerFolder '/var/lib/jenkins/workspace/oracle-java7/jenkins-slave-docker' does not contain a Dockerfile.
      22:52:40 	at org.jenkinsci.plugins.dockerbuildstep.cmd.CreateImageCommand.execute(CreateImageCommand.java:91)
      22:52:40 	at org.jenkinsci.plugins.dockerbuildstep.DockerBuilder.perform(DockerBuilder.java:65)
      

      And creating an empty Dockerfile goes one more step but it keeps trying to build on master and not slave

      22:55:56 FATAL: com.kpelykh.docker.client.DockerException: Dockerfile /var/lib/jenkins/workspace/oracle-java7/jenkins-slave-docker/Dockerfile is empty
      22:55:56 java.lang.RuntimeException: com.kpelykh.docker.client.DockerException: Dockerfile /var/lib/jenkins/workspace/oracle-java7/jenkins-slave-docker/Dockerfile is empty
      22:55:56 	at org.jenkinsci.plugins.dockerbuildstep.cmd.CreateImageCommand.execute(CreateImageCommand.java:142)
      22:55:56 	at org.jenkinsci.plugins.dockerbuildstep.DockerBuilder.perform(DockerBuilder.java:65)
      

          [JENKINS-24071] Docker build step tries to build on master and not slave

          This ticket really makes this plugin almost useless. Did someone find any workaround?

          Radka Nepejchalova added a comment - This ticket really makes this plugin almost useless. Did someone find any workaround?

          any update on this? We need to be able to execute docker commands on slaves...

          Ebrahim Moshaya added a comment - any update on this? We need to be able to execute docker commands on slaves...

          vjuranek added a comment -

          Hi,
          I looked on this issue quite a long time ago - IIRC there is an issue with serialization which is not very easy to solve. If I find some time, I'd like to look on it again soon, but not promises
          Thanks for understanding

          vjuranek added a comment - Hi, I looked on this issue quite a long time ago - IIRC there is an issue with serialization which is not very easy to solve. If I find some time, I'd like to look on it again soon, but not promises Thanks for understanding

          It should be possible to workaround this by using https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Plugin

          Eric Lemanissier added a comment - It should be possible to workaround this by using https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Plugin

          Barry Laffoy added a comment -

          Has there been any further work done on this? With this bug, this plugin is basically unusable on any Jenkins setup that makes use of agents not on the master.

          If this bug hasn't been addressed in three years, then it seems like all the other work put into this plugin has been a waste of time.

          Barry Laffoy added a comment - Has there been any further work done on this? With this bug, this plugin is basically unusable on any Jenkins setup that makes use of agents not on the master. If this bug hasn't been addressed in three years, then it seems like all the other work put into this plugin has been a waste of time.

          This is very serious limitation. Running all the databases and test environments on Jenkins master will certainly make the Jenkins very unresponsive. Slaves are a must for any serious heavy use CI/CD. The load must be shared and some priority operations separated to ensure thorough operation. We can not risk deployment operations because a wild running test is breaking the master.

          Petri Sirkkala added a comment - This is very serious limitation. Running all the databases and test environments on Jenkins master will certainly make the Jenkins very unresponsive. Slaves are a must for any serious heavy use CI/CD. The load must be shared and some priority operations separated to ensure thorough operation. We can not risk deployment operations because a wild running test is breaking the master.

          David Csakvari added a comment - - edited

          Hi!

          I've created a Pull Request to overcome this limitation:

          https://github.com/jenkinsci/docker-build-step-plugin/pull/51

          It's not feature-complete, but it makes the CreateImageCommand play nicely with slaves. If this solution is acceptable, I'll gladly modify the other Commands as well to work with slaves.

          Thanks,

          David

          David Csakvari added a comment - - edited Hi! I've created a Pull Request to overcome this limitation: https://github.com/jenkinsci/docker-build-step-plugin/pull/51 It's not feature-complete, but it makes the CreateImageCommand  play nicely with slaves. If this solution is acceptable, I'll gladly modify the other Commands as well to work with slaves. Thanks, David

          Code changed in jenkins
          User: David Csakvari
          Path:
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/DockerBuilder.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/DockerPostBuilder.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/CommitCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/CreateContainerCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/CreateImageCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/DockerCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/ExecCreateAndStartCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/ExecCreateCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/ExecStartCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/KillCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/PullImageCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/PushImageCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/RemoveAllCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/RemoveCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/RemoveImageCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/RestartCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/SaveImageCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/StartByImageIdCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/StartCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/StopAllCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/StopByImageIdCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/StopCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/TagImageCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/util/Resolver.java
          http://jenkins-ci.org/commit/docker-build-step-plugin/30ab1b41697a8509d27469296c61d57110c24f2f
          Log:
          Fix for JENKINS-24071

          Fix for issue that prevents Docker build step to build images on Jenkins
          slaves.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: David Csakvari Path: src/main/java/org/jenkinsci/plugins/dockerbuildstep/DockerBuilder.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/DockerPostBuilder.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/CommitCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/CreateContainerCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/CreateImageCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/DockerCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/ExecCreateAndStartCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/ExecCreateCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/ExecStartCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/KillCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/PullImageCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/PushImageCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/RemoveAllCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/RemoveCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/RemoveImageCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/RestartCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/SaveImageCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/StartByImageIdCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/StartCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/StopAllCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/StopByImageIdCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/StopCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/TagImageCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/util/Resolver.java http://jenkins-ci.org/commit/docker-build-step-plugin/30ab1b41697a8509d27469296c61d57110c24f2f Log: Fix for JENKINS-24071 Fix for issue that prevents Docker build step to build images on Jenkins slaves.

          Code changed in jenkins
          User: David Csakvari
          Path:
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/CommitCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/CreateContainerCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/CreateImageCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/DockerCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/ExecCreateAndStartCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/ExecCreateCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/ExecStartCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/KillCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/PullImageCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/PushImageCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/RemoveAllCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/RemoveCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/RemoveImageCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/RestartCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/SaveImageCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/StartByImageIdCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/StartCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/StopAllCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/StopByImageIdCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/StopCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/TagImageCommand.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/CommitRemoteCallable.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/CreateContainerRemoteCallable.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/CreateImageRemoteCallable.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/ExecCreateRemoteCallable.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/ExecStartRemoteCallable.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/InspectContainerRemoteCallable.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/KillContainerRemoteCallable.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/ListContainersRemoteCallable.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/PullImageRemoteCallable.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/PushImageRemoteCallable.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/RemoveContainerRemoteCallable.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/RemoveImageRemoteCallable.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/RestartContainerRemoteCallable.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/SaveImageRemoteCallable.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/StartContainerRemoteCallable.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/StopContainerRemoteCallable.java
          src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/TagImageRemoteCallable.java
          http://jenkins-ci.org/commit/docker-build-step-plugin/11a0346f0efa34feb09b408be9fa27d7186a3ec7
          Log:
          Fix for JENKINS-24071

          Refactor remaining commands to use Channel so they can work on Jenkins
          slaves.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: David Csakvari Path: src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/CommitCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/CreateContainerCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/CreateImageCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/DockerCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/ExecCreateAndStartCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/ExecCreateCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/ExecStartCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/KillCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/PullImageCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/PushImageCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/RemoveAllCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/RemoveCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/RemoveImageCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/RestartCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/SaveImageCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/StartByImageIdCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/StartCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/StopAllCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/StopByImageIdCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/StopCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/TagImageCommand.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/CommitRemoteCallable.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/CreateContainerRemoteCallable.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/CreateImageRemoteCallable.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/ExecCreateRemoteCallable.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/ExecStartRemoteCallable.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/InspectContainerRemoteCallable.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/KillContainerRemoteCallable.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/ListContainersRemoteCallable.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/PullImageRemoteCallable.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/PushImageRemoteCallable.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/RemoveContainerRemoteCallable.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/RemoveImageRemoteCallable.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/RestartContainerRemoteCallable.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/SaveImageRemoteCallable.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/StartContainerRemoteCallable.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/StopContainerRemoteCallable.java src/main/java/org/jenkinsci/plugins/dockerbuildstep/cmd/remote/TagImageRemoteCallable.java http://jenkins-ci.org/commit/docker-build-step-plugin/11a0346f0efa34feb09b408be9fa27d7186a3ec7 Log: Fix for JENKINS-24071 Refactor remaining commands to use Channel so they can work on Jenkins slaves.

          vjuranek added a comment -

          Done, thanks to dodiehun!

          vjuranek added a comment - Done, thanks to dodiehun !

            vjuranek vjuranek
            hackmann Hack Kampbjørn
            Votes:
            19 Vote for this issue
            Watchers:
            28 Start watching this issue

              Created:
              Updated:
              Resolved: