簡體   English   中英

Jenkins shell 腳本在 .sh 文件中不起作用

[英]Jenkins shell script not working when in a .sh file

我有一個運行 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

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

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

在 jenkins shell 腳本中試試這個

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

其他腳本

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

在同一個“sh”jenkins的cmd中,工作目錄是一樣的。

我遇到了與上述 Matt 相同的問題,但我 Jenkins(匿名用戶)無權更改到我試圖將目錄(cd)更改為的那個文件夾。 當我切換到 /Users/Shared.. 文件夾時,一切正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM