2012-11-21 54 views
3

我有一個運行shell腳本的Jenkins作業。當腳本直接放置在Build命令字段中時,它可以很好地工作。但是,如果我把劇本在sh文件,然後調用從Build命令字段罰款:詹金斯shell腳本在.sh文件中不工作

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 
+0

更改'/ tmp'腳本,以便它:'sh -x /var/lib/jenkins/scripts/deploy.sh ...'然後報告那個輸出。 'cd:1:...'部分很奇怪;通常,我希望看到'sh:1:...'。這可能有一些信息,但我不知道是什麼。我假設沒有'chroot'的東西......你可能會知道是否有。 –

+0

問題已更新。我很困惑 –

+0

嗯......我也是。輸出以「用戶匿名啓動」開始。問題很簡單,''/ home/repos/magento'上的權限不允許用戶匿名'cd'進入目錄'?也許可以在'cd'前面添加'id'(或者'id -a')腳本,也可以添加'ls -ld/home/home/repos/home/repos/magento'。 –

回答

2

在評論中討論被帶到聊天。

問題最終被發現是Windows行尾(CRLF)導致混淆。例如,目錄/home/repos/magento\r結尾處的CR確實不存在。有潛在的Windows CIF共享文件夾。該解決方案將涉及如何將腳本轉換爲本地Unix(僅限LF)行結尾。

+0

非常感謝您的時間! –

+0

在所有文件上執行'dos2unix' – Slav

0

我遇到了與上面的Matt相同的問題,但我Jenkins(匿名用戶)沒有權限更改爲該文件夾,我試圖更改目錄(cd)。當我切換到/用戶/共享..文件夾一切正常。

0

在詹金斯shell腳本

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

其他腳本

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

在同一個 「噓」 詹金斯的CMD試試這個,工作目錄是一樣的。