簡體   English   中英

Jenkins 管道 Groovy 腳本 tcsh 別名擴展

[英]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.

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