2017-01-24 2 views
1

Eine Liste von Dateien aus dem jenkins-Workspace mit groovy erhalten, schlägt auf einem Knoten fehl, funktioniert aber auf einem anderen. Hier ist der Code in der Pipeline:FileNameFinder(). GetFileNames schlägt auf einem Jenkins-Knoten fehl

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

Ausgang:

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 
+0

Sind die Dateien wirklich auf dem Knoten vorhandenen, wo der Fehler passiert? Projekte werden nur von scm auf einem Knoten ausgecheckt (das heißt, die anderen Knoten haben diese ausgecheckten Dateien nicht), aber Sie können die Ressourcen zwischen den Knoten über [stash/unstash] (https://jenkins.io/doc/pipeline) teilen/steps/workflow-basic-steps/# Unstash-Restore-Dateien-zuvor-versteckt. – fishi

+0

Ich benutze nicht scm. Wie Sie sehen können, funktioniert der Befehl 'dir' im selben Verzeichnis. – Raja

Antwort

0

Pipelines auf dem Jenkins Master ausgeführt werden, und nur durch die Magie der Remote-fähige APIs Dinge tun, auf dem ausgewählten Knoten passieren . Also Datei und alles, was Datei verwendet, funktioniert nicht und wird es nie: Es wird immer auf Master ausgeführt.

Quelle: https://groups.google.com/forum/#!topic/jenkinsci-users/yBiYbwWjg-I

Ich war in der Lage, die Dateien zu erhalten, indem die dir in Fledermaus Befehl:

def bat_out = bat(returnStdout: true, script: '@echo off & dir /b G*.bat').trim()