【发布时间】:2020-11-26 06:08:58
【问题描述】:
我正在尝试在 Jenkins 管道中执行以下阶段
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 Pipeline 的唯一阶段,则 sed 命令会针对 ./volumes/dags 目录下的所有 python 文件执行
怎么可能?
【问题讨论】:
标签: shell jenkins jenkins-pipeline jenkins-groovy groovyshell