如果同一shell命令位于Jenkins管道的不同阶段,则其行为会有所不同

如果同一shell命令位于Jenkins管道的不同阶段,则其行为会有所不同,shell,jenkins,jenkins-pipeline,jenkins-groovy,groovyshell,Shell,Jenkins,Jenkins Pipeline,Jenkins Groovy,Groovyshell,我试图在詹金斯管道中执行以下阶段 stage('RUN') { steps{ dir("airflow-dags") { sh "find ./volumes/dags/ -maxdepth 1 -name '*.py' -print0" } } } 如果此阶段位于最后一个

我试图在詹金斯管道中执行以下阶段

        stage('RUN') {
            steps{
                dir("airflow-dags") {
                    sh "find ./volumes/dags/ -maxdepth 1 -name '*.py' -print0"
                }
            }
        }
如果此阶段位于最后一个位置(在部署和其他内容之后),则不会返回任何内容:

08:56:58  Running in /home/jenkins/workspace/QA_deploy_Docker/airflow-dags
[Pipeline] {
[Pipeline] sh
08:56:59  + find ./volumes/dags/ -maxdepth 1 -name '*.py' -print0
[Pipeline] }
[Pipeline] // dir
[Pipeline] }
[Pipeline] // stage
如果我删除此阶段之前的所有阶段,并只将此阶段保留在管道中,它将返回正确的输出和文件列表

我注意到以下命令具有相同的行为(我是指shell命令的不同行为,取决于管道中的阶段位置):

sh "sed -i '/schedule_interval=/c\\ \\ \\ \\ schedule_interval=None,' ./volumes/dags/*.py"
如果此命令位于最后一个阶段,它将返回错误,例如“/volumes/dags/*.py”没有这样的文件(它引用了路径)

然而,如果此命令位于Jenkins管道的唯一阶段,则sed命令将针对./volumes/dags目录的所有python文件执行,如果


这是怎么回事?

在调查期间,我意识到在部署期间还没有创建文件。 通过添加

sleep 15
在sed或find命令之前