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
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
Ich benutze nicht scm. Wie Sie sehen können, funktioniert der Befehl 'dir' im selben Verzeichnis. – Raja