Jenkins Pipeline文件是否存在

时间:2018-10-05 09:08:22

标签: jenkins jenkins-pipeline pipeline

大家, 我在詹金斯(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" 
                    }
        }
    }

2 个答案:

答案 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 很有用。