'How to check if directory exists outside of workspace from a jenkins pipeline script
Given I have a directory path, how do I check if this directory exists outside of the workspace from a jenkins pipeline script.
Solution 1:[1]
Tried a few things and turned out the answer was already in front of me. fileExists can check for directories as well. Here's how I got around the problem. In this example, I am creating a directory on Windows if it doesn't exist.
Step 1: dir into the directory
dir("C:/_Tests")
Step 2: Now, use fileExists without any file name.
if(!fileExists("/"))
{
bat "mkdir \"C:/_Tests\""
}
Solution 2:[2]
fileExists(target_dir) in pipeline checks the given file in workspace, it is not permitted to access the outside.
to do this, the sh or bat in pipeline can help verify if the target directory exists by calling shell command.
res = sh(script: "test -d ${target_dir} && echo '1' || echo '0' ", returnStdout: true).trim()
if(res=='1'){
echo 'yes'
} else {
echo 'no'
}
Solution 3:[3]
im not sure that that was your question but fileExists() works for directories as well
Solution 4:[4]
for anyone interested a bit more universal (windows, mac, linux and shared library...):
def listDirectories(String Directory, String Pattern) {
def dlist = []
new File(Directory).eachDir {dlist << it.name }
dlist.sort()
dlist = dlist.findAll { it.contains Pattern }
return dlist
}
usage (for this):
if (listDirectories(Directory: "C:/", Pattern: "Windows").size() == 1) { ... }
Solution 5:[5]
None from suggestions above worked for me...
This is 100% working code:
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)
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | KatariaA |
| Solution 2 | |
| Solution 3 | balaganAtomi |
| Solution 4 | David |
| Solution 5 | ybonda |
