我正在尝试在 Jenkins 管道中列出工作区中的文件,以便我可以使用它来生成适当的并行任务。
虽然我可以简单地使用 sh ls > files
并阅读,我想要 File
我可以用更复杂的逻辑进一步过滤的对象。事实上,Files.listFiles(FileFilter)
将是理想的。
但是,我根本无法获取文件列表。首先,我不得不求助于一些奇怪的东西来简单地找出构建的当前工作目录:
sh 'pwd > workspace'
workspace = readFile('workspace').trim()
现在我调用它来检索文件列表:
@NonCPS
def getFiles(String baseDir) {
Arrays.asList(new File(baseDir).listFiles())
}
并在
asList
上获得 NPE ,这意味着,根据我对 javadoc 的阅读,new File(baseDir)
不存在(或不是目录)。我正在标记它
@NonCPS
因为它是流水线上的 groovy 闭包所必需的,我真的更喜欢使用完整的 java <1.8 语法。
最佳答案
关于jenkins - 列出 Jenkins 管道上工作区中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38679991/