我正在尝试使用jenkins build中的execute shell来检查挂载分区中的文件夹是否存在。
if [ ! -d "/media/muralidhar/DATA1/test" ]; then
echo "$destination_directory does not exists"
fi
if [ -d "/var/www/html/" ]; then
echo "$source_directory exists"
fi
构建的输出如下:
[shell_test] $ /bin/bash -xe /tmp/hudson8078612261658226967.sh
+ '[' '!' -d /media/muralidhar/DATA1/test/ ']'
+ echo 'folder /media/muralidhar/DATA1/test/ does not exists'
folder /media/muralidhar/DATA1/test/ does not exists
+ '[' -d /var/www/html/ ']'
+ echo 'folder /var/www/html/ exists'
folder /var/www/html/ exists
Finished: SUCCESS
虽然相同的代码在终端中有效,但jenkins shell表示该目录不存在。有趣的是,目录列表(ls)似乎适用于jenkins shell中的同一目录(仅限sudo)。
如何使用jenkins shell检查挂载的路径/目录是否存在?
其他信息:
jenkins ALL=(ALL) NOPASSWD:ALL
5.挂载的分区文件系统是NTFS
更新
test
,我会得到正确的结果。 sudo test -d "/media/muralidhar/DATA1/test/" && echo Exists || echo Does not exist
从外观上看,jenkins用户无权读取文件夹及其内容(即使该文件夹具有777权限)
exec sudo -u systemuser /bin/bash - << 'EOF'
非常感谢任何替代解决方案。
答案 0 :(得分:0)
确保Jenkins用户对已安装目录具有读取权限。