如何从jenkins管道脚本检查目录是否存在于工作空间之外

时间:2017-10-12 09:05:41

标签: jenkins-pipeline

鉴于我有一个目录路径,如何从jenkins管道脚本检查该目录是否存在于工作空间之外。

4 个答案:

答案 0 :(得分:5)

尝试了一些事情,结果答案已经摆在我面前。 fileExists 也可以检查目录。这就是我解决这个问题的方法。 在此示例中,我在 Windows 上创建了一个目录(如果它不存在)。

第1步 dir 进入目录

dir("C:/_Tests")

第2步:现在,使用没有任何文件名的fileExists。

if(!fileExists("/"))
{
  bat "mkdir \"C:/_Tests\""
}

答案 1 :(得分:3)

我不确定这不是您的问题,但fileExists()也适用于目录

答案 2 :(得分:1)

管道中的

fileExists(target_dir) 检查工作区中的给定文件,不允许访问外部。

要执行此操作,管道中的 sh bat 可以通过调用shell命令帮助验证目标目录是否存在。

res = sh(script: "test -d ${target_dir} && echo '1' || echo '0' ", returnStdout: true).trim()
if(res=='1'){
    echo 'yes'
} else {
    echo 'no'
}

答案 3 :(得分:0)

以上建议都没有对我有用...

这是 100% 工作代码:

                        efs_path = '~/efs-mount-point'
                        stdout = sh( script: '''#!/bin/bash
                        set -ex
                        if [ -d ''' + efs_path + ''' ]; then
                            echo "true"
                        else
                            echo "false"
                        fi
                        ''', returnStdout: true)

                        echo stdout

                        if (stdout.contains('false')) {
                            error('No such directory: ' + efs_path)
                        }