我在 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 中應該由源來處理。
我錯過了什么?
uj5u.com熱心網友回復:
找到了解決方案:
sh '#!/bin/tcsh \n'
'source ./mysettings.sh \n'
'echo "Calling my alias" \n'
'my_alias \n'
以 sh 開頭的每一行都會啟動一個新的 shell,因此它必須在一行中,包括換行符。
更令人困惑的是,jenkins 的檔案說它啟動了“bash”,但它啟動了 /bin/sh,在我的情況下它指向了別的東西
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/510158.html
