4

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

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

$sh_dir是一个环境变量,其余的是作业参数。它不起作用,它在第一个命令上失败,这很简单

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.

我要疯了,试图弄清楚这一点。

编辑: deploy.sh 的结果-x

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
4

3 回答 3

2

评论中的讨论被带到了聊天室。

最终发现该问题是由于 Windows 行尾 (CRLF) 引起的混乱。例如,/home/repos/magento\r末尾带有 CR 的目录实际上是不存在的。周围有 Windows CIF 共享文件夹。该解决方案将涉及如何将脚本转换为本机 Unix(仅限 LF)行尾。

于 2012-11-21T16:38:41.200 回答
1

在 jenkins shell 脚本中试试这个

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

其他脚本

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

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

于 2017-12-12T09:11:47.813 回答
0

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

于 2015-09-23T19:43:37.270 回答