大家, 我在詹金斯(Jenkins)的声明式管道中的一个阶段遇到问题。 我希望Jenkins检查目录/ root / elp是否包含名称为* .php的数据。如果是这种情况,jenkins应该执行命令。如果文件夹中没有任何内容,詹金斯应该成功完成工作。
我的代码不起作用:
stage('Test Stage') {
steps {
script {
def folder = new File( '/root/elp/test.php' )
if( folder.exists() ) {
sh "LINUX SHELL COMMAND"
} else {
println "File doesn't exist"
}
}
}
答案 0 :(得分:1)
使用以下内容:-
def exists = fileExists '/root/elp/test.php'
if (exists) {
sh "LINUX SHELL COMMAND"
} else {
println "File doesn't exist"
}
您可以关注check-if-a-file-exists-in-jenkins-pipeline
您还可以在下面使用:-
def exitCode = sh script: 'find -name "*.zip" | egrep .', returnStatus: true
boolean exists = exitCode == 0
答案 1 :(得分:0)
以下示例是使用 Jenkins declarative pipeline 时:
pipeline{
agent any
environment{
MY_FILE = fileExists '/tmp/myfile'
}
stages{
stage('conditional if exists'){
when { expression { MY_FILE == 'true' } }
steps {
echo "file exists"
}
}
stage('conditional if not exists'){
when { expression { MY_FILE == 'false' } }
steps {
echo "file does not exist"
}
}
}
}
对于 scripted pipeline,您可能会发现此 bash syntax to check if file exists 很有用。