Ok, thx. I will test it as soon as it's merged/released. /S On Monday, 6 February 2017 12:57:56 UTC+1, Andrew Bayer wrote: > > I've got a PR up for this now - > https://github.com/jenkinsci/pipeline-model-definition-plugin/pull/107 > > A. > > On Sun, Feb 5, 2017 at 9:01 PM, Staffan Forsell <[email protected] > <javascript:>> wrote: > >> Hmmm, of course I found >> https://issues.jenkins-ci.org/browse/JENKINS-41668 a couple of minutes >> later... >> >> On Sunday, 5 February 2017 20:50:16 UTC+1, Staffan Forsell wrote: >>> >>> I have an normal pipeline that looks like this: >>> >>> #!groovy >>> node('docker_host') { >>> stage("checkout") { >>> p4sync credential: 'superSecretCred', depotPath: '//path' >>> } >>> def myEnv >>> stage("docker build") { >>> myEnv = docker.build("mytag", "utils/docker") >>> } >>> myEnv.inside { >>> stage("build") { >>> sh "./gradle" >>> } >>> } >>> } >>> >>> It builds a docker image and run the build stage in this image. The only >>> non-standard stuff is that the Dockerfile is not in the root but in the >>> "utils/docker" subdir to reduce the build context for docker. >>> I'm trying to convert this to a declarative pipeline but I can't find a >>> way to get it to accept the Dockerfile in a separate dir. Normally this is >>> done by adding the "utils/build" at the end of the docker build command. >>> My converted attempt looks like this: >>> >>> pipeline { >>> agent { >>> label "docker_host" >>> } >>> stages { >>> stage("Checkout") { >>> steps { >>> p4sync credential: 'superSecretCred', depotPath: '//path' >>> } >>> } >>> stage("Echo world") { >>> agent { >>> dockerfile { >>> label "docker_host" >>> args "utils/docker" >>> // dockerfile "utils/docker/Dockerfile" >>> } >>> } >>> steps { >>> sh "./gradle" >>> } >>> } >>> } >>> } >>> >>> This fails with >>> java.io.IOException: java.io.FileNotFoundException: >>> /jenkins/workspace/test-job-declarative@2/Dockerfile (No such file or >>> directory) >>> at >>> hudson.remoting.FastPipedInputStream.read(FastPipedInputStream.java:169) >>> at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283) >>> at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325) >>> at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177) >>> at java.io.InputStreamReader.read(InputStreamReader.java:184) >>> at java.io.Reader.read(Reader.java:140) >>> at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:2001) >>> at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1980) >>> at org.apache.commons.io.IOUtils.copy(IOUtils.java:1957) >>> at org.apache.commons.io.IOUtils.copy(IOUtils.java:1907) >>> at org.apache.commons.io.IOUtils.toString(IOUtils.java:778) >>> at org.apache.commons.io.IOUtils.toString(IOUtils.java:803) >>> at >>> org.jenkinsci.plugins.workflow.steps.ReadFileStep$Execution.run(ReadFileStep.java:89) >>> at >>> org.jenkinsci.plugins.workflow.steps.ReadFileStep$Execution.run(ReadFileStep.java:81) >>> at >>> org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1$1.call(AbstractSynchronousNonBlockingStepExecution.java:47) >>> at hudson.security.ACL.impersonate(ACL.java:221) >>> at >>> org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1.run(AbstractSynchronousNonBlockingStepExecution.java:44) >>> at >>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) >>> at java.util.concurrent.FutureTask.run(FutureTask.java:262) >>> at >>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) >>> at java.lang.Thread.run(Thread.java:745) >>> Caused by: java.io.FileNotFoundException: >>> /jenkins/workspace/test-job-declarative@2/Dockerfile (No such file or >>> directory) >>> at java.io.FileInputStream.open0(Native Method) >>> at java.io.FileInputStream.open(FileInputStream.java:195) >>> at java.io.FileInputStream.<init>(FileInputStream.java:138) >>> at hudson.FilePath$33.invoke(FilePath.java:1789) >>> at hudson.FilePath$33.invoke(FilePath.java:1782) >>> at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2772) >>> at hudson.remoting.UserRequest.perform(UserRequest.java:153) >>> at hudson.remoting.UserRequest.perform(UserRequest.java:50) >>> at hudson.remoting.Request$2.run(Request.java:332) >>> at >>> hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68) >>> at java.util.concurrent.FutureTask.run(FutureTask.java:266) >>> at >>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) >>> ... 1 more >>> >>> Using the dockerfile closure, it's unclear if args is for the build >>> command or the subsequent run command (my guess is the latter). >>> Anybody know a way to use a Dockerfile that's not in the root? Or is it >>> not supported (yet)? >>> >>> /Thanks Staffan >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "Jenkins Users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/jenkinsci-users/78dea921-bc15-4e4f-8662-209f4aa80e86%40googlegroups.com >> >> <https://groups.google.com/d/msgid/jenkinsci-users/78dea921-bc15-4e4f-8662-209f4aa80e86%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> >> For more options, visit https://groups.google.com/d/optout. >> > >
-- You received this message because you are subscribed to the Google Groups "Jenkins Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/e09ccbf5-ade6-4903-a2ce-9f280ed5b8bb%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
