jenkins - 列出 Jenkins 管道上工作区中的文件

标签 jenkins groovy jenkins-pipeline

我正在尝试在 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 语法。

最佳答案

对于密码,您可以使用 pwd 步。

至于主工作区目录中的文件列表,您可以使用 findFiles :

files = findFiles(glob: '*.*')

关于jenkins - 列出 Jenkins 管道上工作区中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38679991/

相关文章:

templates - Groovy TemplateEngines 给出 "Scripts not permitted Error to use new groovy.text.SimpleTemplateEngine ERROR"

bash - Jenkins 内部 docker-compose 的环境变量

groovy - 在 groovy 中构建频率计数图。

groovy - 在 mailgun 中使用 groovy httpbuilder 发布参数

grails - 从选择标签中选择多个值 - Grails

jenkins - 从另一个 Jenkinsfile 调用远程 jenkins 文件

Jenkins dsl 管道 def 变量

git - 使用带有凭据的 Jenkinsfile 管道向存储库添加标签

xcode - 我可以使用 Jenkins XCode Plugin 在 Linux 系统上构建 iPad 项目吗?

基于 Jenkins 角色的身份验证 - 用户缺少整体/读取权限