Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jenkinsh(shell)步骤中的全局模式_Jenkins_Jenkins Pipeline_Glob - Fatal编程技术网

Jenkinsh(shell)步骤中的全局模式

Jenkinsh(shell)步骤中的全局模式,jenkins,jenkins-pipeline,glob,Jenkins,Jenkins Pipeline,Glob,我正在尝试设置一个Jenkins文件来运行我们的CI管道。其中一个步骤将涉及从整个目录树中收集文件,并将其复制到单个目录中,以便进行压缩 我试图使用Jenkinssh步骤和glob模式来实现这一点,但我似乎无法实现这一点 一个简单的例子是: pipeline { agent any stages { stage('List with Glob'){ steps{ sh 'ls **/*.xml'

我正在尝试设置一个Jenkins文件来运行我们的CI管道。其中一个步骤将涉及从整个目录树中收集文件,并将其复制到单个目录中,以便进行压缩

我试图使用Jenkins
sh
步骤和glob模式来实现这一点,但我似乎无法实现这一点

一个简单的例子是:

pipeline {
    agent any
    stages {
        stage('List with Glob'){
            steps{
                sh 'ls **/*.xml'
            }
        }
    }
}
我希望它列出工作区中的任何.xml文件,但我收到的是:

[Pipeline] }
[Pipeline] // stage
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (List with Glob)
[Pipeline] sh
[jenkinsfile-pipeline] Running shell script
+ ls '**/*.xml'
ls: cannot access **/*.xml: No such file or directory
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 2
Finished: FAILURE
我认为Groovy字符串插值缺少了一些东西,但对于这个特定情况,我需要一些帮助(通过Jenkins文件在Jenkins管道中运行)


非常感谢任何帮助

据我所知,
***.xml'
不是有效的全局模式()。相反,这里有一个ant,据我所知,它不受bash(或sh)支持。相反,你不想做的是:


可能使用的shell与您预期的不同,我相信默认情况下,
sh
中的所有内容都是由bourne shell(而不是
bash
)执行的。我认为您是对的。我使用了
zsh
,它似乎支持开箱即用,而下面的答案告诉我这不是一个有效的glob模式。谢谢,谢谢你。正如我的问题下面的评论所说,我一直在使用
zsh
,但没有意识到它支持globstar进行开箱即用的递归匹配。你的答案很好,我使用了
查找
,然后使用
-exec
将文件复制到需要的位置。
pipeline {
    agent any
    stages {
        stage('List with find'){
            steps{
                sh "find . -type f -name '*.xml'"
            }
        }
    }
}