我尝试在Jenkins Pipeline中列出工作区中的文件,以便可以使用它来生成适当的并行任务。
虽然我可以简单地使用sh ls > files
并读取它,但我需要File
对象,我可以用更复杂的逻辑进一步过滤它们。
然而,我根本无法获得文件列表。首先,我不得不求助于一些奇怪的东西来简单地找到构建的当前工作目录:
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
,因为它是Pipeline上groovy闭包所必需的,我真的更喜欢使用它而不是完整的java〈1.8语法。
6条答案
按热度按时间syqv5f0l1#
对于pwd,您可以使用
pwd
step。对于主工作区目录中的文件列表,您可以使用
findFiles
:t1qtbnec2#
一个在所有情况下都有效的解决方案,无需使用JENKINS函数
rpppsulh3#
下面是一个例子,说明我如何在项目中查找json文件以进行处理。
dxpyg8gm4#
您可以尝试使用pwd()的以下命令。
kyvafyod5#
这是最简单和不复杂的groovy解决方案,为我工作。
yqyhoc1h6#
这对我很有效!