Issue
I'm new with Jenkins and I have some problem. I have Jenkins pipeline and groovy script for it. I create folder and file inside it. Then I check this file existence (ls -l) - it exists. Then I try to read this file and get FileNotFoundException. I'm pretty sure that both file paths (for creation and for reading) are the same. I'll be grateful for any suggestions for this. Here is my groovy code:
sh "mkdir ${WORKSPACE}/ucp"
sh "mkdir ${WORKSPACE}/ucp/model"
dir ("${WORKSPACE}/ucp") {
dir("model") {
writeFile file: 'ucp-v.0.0.1.metamodel.json', text: """{foo: bar, baz: buzz}
"""
sh "ls -l"
model_path = "${WORKSPACE}/ucp/model"
modelContent = new File("${model_path}" + "/ucp-v.0.0.1.metamodel.json").text
println modelContent
}
}
And here is Jenkins pipeline log:
Running in Durability level: PERFORMANCE_OPTIMIZED
[Pipeline] Start of Pipeline
[Pipeline] node
Running on jenkins-agent-linux-007 in /u01/jenkins_slave/workspace/PlatformBuilder/pprbod/PprbodDBAdminJobs/test_pipeline
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Prepare workspace)
[Pipeline] dir
Running in /u01/jenkins_slave/workspace/PlatformBuilder/pprbod/PprbodDBAdminJobs/test_pipeline
[Pipeline] {
[Pipeline] deleteDir
[Pipeline] }
[Pipeline] // dir
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Checkout)
[Pipeline] echo
CHECKOUT
[Pipeline] echo
/u01/jenkins_slave/workspace/PlatformBuilder/pprbod/PprbodDBAdminJobs/test_pipeline
[Pipeline] sh
+ mkdir /u01/jenkins_slave/workspace/PlatformBuilder/pprbod/PprbodDBAdminJobs/test_pipeline/ucp
[Pipeline] sh
+ mkdir /u01/jenkins_slave/workspace/PlatformBuilder/pprbod/PprbodDBAdminJobs/test_pipeline/ucp/model
[Pipeline] sh
+ mkdir /u01/jenkins_slave/workspace/PlatformBuilder/pprbod/PprbodDBAdminJobs/test_pipeline/ucp/whitelist
[Pipeline] dir
Running in /u01/jenkins_slave/workspace/PlatformBuilder/pprbod/PprbodDBAdminJobs/test_pipeline/ucp
[Pipeline] {
[Pipeline] dir
Running in /u01/jenkins_slave/workspace/PlatformBuilder/pprbod/PprbodDBAdminJobs/test_pipeline/ucp/model
[Pipeline] {
[Pipeline] writeFile
[Pipeline] sh
+ ls -l
total 4
-rw-r--r-- 1 jenkins jenkins 30 Aug 26 06:07 ucp-v.0.0.1.metamodel.json
[Pipeline] }
[Pipeline] // dir
[Pipeline] }
[Pipeline] // dir
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
java.io.FileNotFoundException: /u01/jenkins_slave/workspace/PlatformBuilder/pprbod/PprbodDBAdminJobs/test_pipeline/ucp/model/ucp-v.0.0.1.metamodel.json (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 groovy.util.CharsetToolkit.<init>(CharsetToolkit.java:71)
at org.codehaus.groovy.runtime.ResourceGroovyMethods.newReader(ResourceGroovyMethods.java:1572)
at org.codehaus.groovy.runtime.ResourceGroovyMethods.getText(ResourceGroovyMethods.java:600)
at org.codehaus.groovy.runtime.dgm$963.doMethodInvoke(Unknown Source)
at org.codehaus.groovy.reflection.GeneratedMetaMethod$Proxy.doMethodInvoke(GeneratedMetaMethod.java:73)
at groovy.lang.MetaClassImpl.getProperty(MetaClassImpl.java:1850)
at groovy.lang.MetaClassImpl.getProperty(MetaClassImpl.java:3758)
at org.codehaus.groovy.runtime.InvokerHelper.getProperty(InvokerHelper.java:179)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.getProperty(ScriptBytecodeAdapter.java:456)
at org.kohsuke.groovy.sandbox.impl.Checker$7.call(Checker.java:355)
at org.kohsuke.groovy.sandbox.GroovyInterceptor.onGetProperty(GroovyInterceptor.java:68)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:313)
at org.kohsuke.groovy.sandbox.impl.Checker$7.call(Checker.java:353)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:357)
at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:29)
at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)
at WorkflowScript.run(WorkflowScript:33)
at ___cps.transform___(Native Method)
at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.get(PropertyishBlock.java:74)
at com.cloudbees.groovy.cps.LValueBlock$GetAdapter.receive(LValueBlock.java:30)
at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.fixName(PropertyishBlock.java:66)
at sun.reflect.GeneratedMethodAccessor396.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
at com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21)
at com.cloudbees.groovy.cps.Next.step(Next.java:83)
at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:174)
at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:163)
at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:129)
at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:268)
at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:163)
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:18)
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:51)
at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:185)
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:400)
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$400(CpsThreadGroup.java:96)
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:312)
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:276)
at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:67)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:131)
at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:59)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Finished: FAILURE
Solution
Jenkins not supported new File(). Problem was solved by writing this:
modelContent = readFile(<path>)
Answered By - kostyawh
Answer Checked By - David Marino (JavaFixing Volunteer)