我在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
答案 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
的价值是多少?也许它在目录树中比你想要的更进一步。