[英]Jenkins Pipeline Groovy script tcsh alias expansion
我在 Jenkins 中有一個遺留項目,必須進行流水線處理(以便以后並行化),因此從簡單的 tcsh 腳本轉移到流水線
運行腳本作為
#!/bin/tcsh
source ./mysetting.sh
update
有效,但由於缺少別名擴展,相同的管道步驟失敗
stage ('update') {
steps {
//should be working but alias expansion fails
sh 'tcsh -c "source ./mysettings.sh; alias; update"'
//manually expanding the alias works fine
sh 'tcsh -c "source ./mysettings.sh; alias; python update.py;"'
}
}
在步驟中調用 alias 正確列出了所有設置的別名,因此我可以看到它們,但不能使用它們。
我知道必須設置 bash 別名擴展
#enable shell option for alias_expansion
shopt -s expand_aliases
但在 csh/tcsh 中,應該由源代碼處理。
我錯過了什么?
找到了解決方案:
sh '#!/bin/tcsh \n' +
'source ./mysettings.sh \n' +
'echo "Calling my alias" \n' +
'my_alias \n'
以 sh 開頭的每一行都會啟動一個新的 shell,因此它必須在一行中,包括換行符。
更令人困惑的是 jenkins 的文檔說它啟動了“a bash”,但它啟動了 /bin/sh,在我的例子中它指向了其他東西
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.