在.sh文件中,Jenkins shell脚本无法正常工作

时间:2012-11-21 14:47:55

标签: shell jenkins

我有一个运行shell脚本的Jenkins作业。当脚本直接放在Build命令字段中时,它可以很好地工作。但是,如果我将脚本放在.sh文件中,然后从Build命令字段中调用它:

sh $sh_dir/deploy.sh $repo_dir $name $ref $env $site_dir

$sh_dir是一个env变量,其余是作业参数。它不起作用,它在第一个命令

上失败
cd $1/$2

同样,这在直接放在命令字段中时效果很好,但在.sh文件中则不行。 .sh文件作业的输出是:

Started by user anonymous
Building in workspace /var/lib/jenkins/workspace/deploy
[deploy] $ /bin/sh -xe /tmp/hudson6229756058999358596.sh

+ /var/lib/jenkins/scripts/deploy.sh /home/repos magento master live /home/sites
cd: 1: can't cd to /home/repos/magento

是的,目录确实存在,是的,它归jenkins所有。

我想出去解决这个问题。

编辑:使用-x的deploy.sh的结果:

Started by user anonymous
Building in workspace /var/lib/jenkins/workspace/deploy
[deploy] $ /bin/sh -xe /tmp/hudson3304816709711757032.sh
+ sh -x /var/lib/jenkins/scripts/deploy.sh /home/repos magento develop staging /home/sites
+ cd /home/repos/magento
cd: 1: can't cd to /home/repos/magento

3 个答案:

答案 0 :(得分:2)

评论中的讨论被用来聊天。

最终发现问题是Windows行结尾(CRLF)导致混淆。例如,目前结尾有CR的目录/home/repos/magento\r确实不存在。有潜伏的Windows CIF共享文件夹。该解决方案将涉及如何将脚本转换为本机Unix(仅限LF)行结束。

答案 1 :(得分:1)

在jenkins shell脚本中试试这个

sh 'pwd'
sh 'cd ..'
sh 'pwd'

其他剧本

sh '''pwd
cd ..
pwd'''

在同一个" sh" jenkins的cmd,工作目录是一样的。

答案 2 :(得分:0)

我遇到了与上面Matt相同的问题,但我Jenkins(匿名用户)没有权限更改到我试图将目录(cd)更改为的文件夹。当我切换到/ Users / Shared ..文件夹时,一切正常。