[英]Shell script (.sh file) not working in crontab but it's working alone
[英]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.