检查jenkins管道中是否存在文件

Bal*_*ays 57 jenkins jenkins-workflow jenkins-pipeline

我正在尝试运行块,如果我的jenkins工作空间中存在一个目录,并且工作空间中的管道步骤"fileExists:验证文件存在"似乎无法正常工作.

我正在使用Jenkins v 1.642和Pipeline v 2.1.并试图有一个像这样的条件

if ( fileExists 'test1' ) {
  //Some block
}
Run Code Online (Sandbox Code Playgroud)

我在管道中有哪些其他选择?

Ger*_*oth 124

fileExistsif条件中使用步骤或将返回的值赋给变量时,需要使用括号

使用变量:

def exists = fileExists 'file'

if (exists) {
    echo 'Yes'
} else {
    echo 'No'
}
Run Code Online (Sandbox Code Playgroud)

使用括号:

if (fileExists('file')) {
    echo 'Yes'
} else {
    echo 'No'
}
Run Code Online (Sandbox Code Playgroud)

  • @MariusGedminas if 语句不能位于管道中“步骤”的顶层。将 if 语句括在脚本标记内以解决此问题。例如,步骤 { script { if (condition) { doSomething() } } } (5认同)
  • 对于声明性 Jenkinsfile,您可以使用 fileExists(file: 'src/test/java') (例如,用于阶段中步骤的 when 表达式) (4认同)
  • 当我尝试使用此语法时出现错误(带括号的`fileExists`)--“WorkflowScript: 90: Expected a step @ line 90, column 21”,插入符号指向 `if`。 (2认同)
  • 文件名比较怎么样?此方法在比较文件名时是否使用区分大小写的比较?如果是,那么如何以不区分大小写的方式进行比较? (2认同)

小智 17

必须使用关键字“return”

stage('some stage') {
    when { expression { return fileExists ('myfile') } }
    steps {
           echo "file exists"
          }
    }
Run Code Online (Sandbox Code Playgroud)