FileNameFinder().getFileNames fails on one Jenkins node

414 views
Skip to first unread message

Raja Chinnam

unread,
Jan 24, 2017, 2:41:26 PM1/24/17
to Jenkins Users
Getting a list of files from jenkins workspace using groovy fails on one node but it works on another. How can I investigate it? There was a similar error when I tried "new File(pd).eachFile" method but "fileExists "$pd\\gol.bat" returned true. 

Pipeline code:

def pd = pwd()
bat
"dir $pd"
def bat_files = new FileNameFinder().getFileNames(pd, 'G*.bat')




Output:

C:\Jenkins\Slave\workspace\TestFolder\CodeTestPipe>dir C:\Jenkins\Slave\workspace\TestFolder\CodeTestPipe
 
Volume in drive C is OSDisk
 
Volume Serial Number is AAA1-73FA


 
Directory of C:\Jenkins\Slave\workspace\TestFolder\CodeTestPipe


01/23/2017  05:34 PM    <DIR>          .
01/23/2017  05:34 PM    <DIR>          ..
01/23/2017  05:34 PM                 4 GOL.bat
               
1 File(s)              4 bytes
               
2 Dir(s)  134,906,617,856 bytes free
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
C
:\Jenkins\Slave\workspace\TestFolder\CodeTestPipe does not exist.
 at org
.apache.tools.ant.types.AbstractFileSet.getDirectoryScanner(AbstractFileSet.java:483)
 at org
.codehaus.groovy.ant.FileIterator.setNextObject(FileIterator.java:119)
 at org
.codehaus.groovy.ant.FileIterator.hasNext(FileIterator.java:81)
 at groovy
.util.FileNameFinder.getFileNames(FileNameFinder.groovy:44)
 at groovy
.util.FileNameFinder$getFileNames.callCurrent(Unknown Source)
 at groovy
.util.FileNameFinder.getFileNames(FileNameFinder.groovy:31)
 at groovy
.util.IFileNameFinder$getFileNames.call(Unknown Source)
 at org
.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
 at org
.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
 at com
.cloudbees.groovy.cps.sandbox.DefaultInvoker.methodCall(DefaultInvoker.java:18)
 at
WorkflowScript.run(WorkflowScript:22)
 at ___cps
.transform___(Native Method)
 at com
.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:57)
 at com
.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:109)
 at com
.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:82)
 at sun
.reflect.GeneratedMethodAccessor105.invoke(Unknown Source)
 at sun
.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java
.lang.reflect.Method.invoke(Unknown Source)
 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:58)
 at com
.cloudbees.groovy.cps.Continuable.run0(Continuable.java:154)
 at org
.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:163)
 at org
.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:324)
 at org
.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$100(CpsThreadGroup.java:78)
 at org
.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:236)
 at org
.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:224)
 at org
.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:63)
 at java
.util.concurrent.FutureTask.run(Unknown Source)
 at hudson
.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:112)
 at jenkins
.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
 at java
.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
 at java
.util.concurrent.FutureTask.run(Unknown Source)
 at java
.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
 at java
.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
 at java
.lang.Thread.run(Unknown Source)
Finished: FAILURE











Daniel Beck

unread,
Jan 26, 2017, 7:09:07 AM1/26/17
to jenkins...@googlegroups.com

> On 24.01.2017, at 20:41, Raja Chinnam <rajasekha...@gmail.com> wrote:
>
> Getting a list of files from jenkins workspace using groovy fails on one node but it works on another. How can I investigate it? There was a similar error when I tried "new File(pd).eachFile" method but "fileExists "$pd\\gol.bat" returned true.

Pipelines are executed on the Jenkins master, and only through the magic of remoting-enabled APIs do things happen on the selected node. So File, and everything using File, doesn't work, and never will: It always executes on master.

1: https://wiki.jenkins-ci.org/display/JENKINS/Making+your+plugin+behave+in+secured+Jenkins

Daniel Beck

unread,
Jan 26, 2017, 7:09:57 AM1/26/17
to jenkins...@googlegroups.com

> On 26.01.2017, at 13:09, Daniel Beck <m...@beckweb.net> wrote:
>
> 1: https://wiki.jenkins-ci.org/display/JENKINS/Making+your+plugin+behave+in+secured+Jenkins

Wrong link -- the correct wiki page with (very advanced) information on how remoting works (that's probably not relevant to users of Pipeline at all):

https://wiki.jenkins-ci.org/display/JENKINS/Making+your+plugin+behave+in+distributed+Jenkins

Raja Chinnam

unread,
Jan 26, 2017, 2:29:18 PM1/26/17
to Jenkins Users, m...@beckweb.net
Thank you Daniel. 
Reply all
Reply to author
Forward
0 new messages