2016-05-25 2 views
2

Я следующий сценарий работает на моем Дженкинс мастерGroovy траверс показывает только один файл

def workspace = pwd() 
def sourceDir = new File(workspace) 

println "Files: Traverse" 
sourceDir.traverse(type: FileType.FILES, nameFilter: ~/.*\.cpp/) { 
    println it.path 
} 

Это возвращает только один файл не более:

[Pipeline] pwd 
[Pipeline] echo 
Files: Traverse 
[Pipeline] echo 
/var/lib/jenkins/workspace/job/project/Source/A/a.cpp 
[Pipeline] } 
[Pipeline] // node 
[Pipeline] End of Pipeline 

Я подтвердил, что рабочая область содержит все файлы требуются, я использую Jenkins v1.651.2

ответ

1

Это, вероятно, связано с этой ошибкой: https://issues.jenkins-ci.org/browse/JENKINS-26481

Обход заключается в использовании вспомогательный метод @NonCPS, например, что-то вроде:

@NonCPS 
def traverseHelper() { 
    new File(pwd()).traverse(type: FileType.FILES, nameFilter: ~/.*\.cpp/) { 
     println it.path 
    } 
} 

println "Files: Traverse" 
traverseHelper() 
0

Я запускал это через консоль сценария, и он отлично работал для указанной мной директории.

Вы уверены, что используете этот вариант в неверном каталоге? Какая ценность workspace? Возможно, это начинается дальше по дереву каталогов, чем вы планировали.

+0

выходы рабочей области как/var/lib/jenkins/job/that is correct. –