Groovy遍历仅显示一个文件

时间:2016-05-25 09:13:45

标签: jenkins groovy continuous-integration

我在Jenkins主程序上运行了以下脚本

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

2 个答案:

答案 0 :(得分:4)

这可能与此错误有关: 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()

答案 1 :(得分:0)

我通过脚本控制台运行它,它适用于我指定的目录。

您确定从正确的目录开始遍历吗? workspace的价值是多少?也许它在目录树中比你想要的更进一步。