我试图在Jenkins Pipeline中列出工作区中的文件,这样我就可以使用它来生成适当的并行任务。
虽然我可以简单地使用sh ls
但是,我根本无法获取文件列表。首先,我不得不求助于一些奇怪的东西来简单地找出构建的当前工作目录:
sh 'pwd > workspace'
workspace = readFile('workspace').trim()
现在我调用它来检索文件列表:
@NonCPS
def getFiles(String baseDir) {
Arrays.asList(new File(baseDir).listFiles())
}
并在asList
上获得一个NPE,这意味着,通过我对javadoc的阅读,新文件(baseDir)不存在(或者不是目录)。
我之所以将其标记为@NonCPS
,是因为它是管道上groovy闭包所必需的,我更喜欢使用它而不是使用完整的java
一种在所有情况下都能工作的解决方案,无需使用JENKINS函数
def FILES_LIST = sh (script: "ls '${workers_dir}'", returnStdout: true).trim()
//DEBUG
echo "FILES_LIST : ${FILES_LIST}"
//PARSING
for(String ele : FILES_LIST.split("\\r?\\n")){
println ">>>${ele}<<<"
}
下面是我如何在项目中查找json文件以进行处理的示例。
sh "ls *.json > listJsonFiles"
def files = readFile( "listJsonFiles" ).split( "\\r?\\n" );
sh "rm -f listJsonFiles"
对于pwd,您可以使用pwd
步骤。
对于主工作区目录中的文件列表,您可以使用findFiles
:
files = findFiles(glob: '*.*')
5/14/13 4:01:16.932 PM[0x0-0x51b51b].org.eclipse.eclipse:eclipse.buildid=m20130204-1200 5/14/13 4:01:16.932 PM[0x0-0x51b51b].org.eclipse.eclipse:java.version=1.7.0_17 5/14/13 4:01:16.932 PM[0x0-0x51b5
问题内容: 以下Python 2代码打印当前工作区中所有窗口的列表: 尽管它不会打印全屏显示的应用程序(因为它位于另一个工作区中)。 如何修改上述脚本以列出所有桌面上的所有窗口? 问题答案: 以下脚本应在任何桌面/工作区/显示器,全屏和详细信息(坐标,pid,标题等)上返回窗口信息:
问题内容: 我的工作区中有一个文件夹,但在“ src”之外,其中包含一个文件,使用自定义插件向导时,该文件需要读取才能设置新文件。 除非我确切指定该文件在系统中的位置,否则我无法正确获取此文件的位置并保持获取空指针。我的问题是该文件在插件项目中,但无法获取它的位置。 插件中的文件位置为com.my.plugin / rules / setup.txt 问题答案: 要从已部署的捆绑包中加载资源,您可
工作空间是包含仪表板、图表和数据源的地方。你可以在工作空间中创建多个仪表板、图表和数据源。 自定义工作区 你可以在工作区中查看和排序项目。若要从一个视图更改为另一个视图,请点击窗口底部的 “列表”或 “网格”按钮。或者,选择“查看”->“列表”或“网格”。 列表视图显示有关每个项目的额外信息。你可以在列表视图中对项目进行排序,点击要用来对项目进行排序的列标题。 网格视图以网格显示你的项目为缩略图。
工作空间是包含仪表板、图表和数据源的地方。你可以在工作空间中创建多个仪表板、图表和数据源。 自定义工作区 你可以在工作区中查看和排序项目。若要从一个视图更改为另一个视图,请点击窗口底部的 “列表”或 “网格”按钮。或者,选择“查看”->“列表”或“网格”。 列表视图显示有关每个项目的额外信息。你可以在列表视图中对项目进行排序,点击要用来对项目进行排序的列标题。 网格视图以网格显示你的项目为缩略图。
工作空间是包含仪表板、图表和数据源的地方。你可以在工作空间中创建多个仪表板、图表和数据源。 自定义工作区 你可以在工作区中查看和排序项目。若要从一个视图更改为另一个视图,请点击窗口底部的 “列表”或 “网格”按钮。或者,选择“查看”->“列表”或“网格”。 列表视图显示有关每个项目的额外信息。你可以在列表视图中对项目进行排序,点击要用来对项目进行排序的列标题。 网格视图以网格显示你的项目为缩略图。