[英]Executing bash script in remote server through a Jenkins's shell script
我試圖通過 Jenkins 作業 shell 腳本在遠程服務器中執行腳本。 當我執行時,構建成功但我沒有得到預期的輸出。 名為“war_files_to_add”的參數取自 Jenkins 作業參數。 “DEV1”變量也是遠程服務器的 IP 地址。 另請注意,在同一 Jenkins 作業中的以下代碼構建階段。
注意:- Jenkins 在DEV2服務器上運行。
“war_files_to_add”的示例值
"polling,processing"
代碼
#!/bin/bash
WAR_FILES_TO_ADD=${war_files_to_add}
ssh -t centos@$DEV1 bash -c "'
IFS="," read -r -a array <<< "$WAR_FILES_TO_ADD"
for e in "${array[@]}"; do
echo "$e"
done
echo "${array[0]}"
'"
當我在本地環境中運行以下代碼時,我得到了相關的輸出。
IFS="," read -r -a array <<< "$WAR_FILES_TO_ADD"
for e in "${array[@]}"; do
echo "$e"
done
echo "${array[0]}"
輸出
polling
processing
我在這里經歷了很多問題和答案,但找不到合適的解決方案。 因此,任何幫助將不勝感激。
作為一種解決方法,您可以創建管道而不是自由式項目,您可以編寫聲明性或腳本化管道。
您需要的是將這個插件安裝到 jenkins 中,然后編寫如下腳本。
def remote = [:]
remote.name = 'test'
remote.host = 'test.domain.com'
remote.user = 'root'
remote.password = 'password'
remote.allowAnyHosts = true
stage('Remote SSH') {
sshCommand remote: remote, command: "ls -lrt"
sshCommand remote: remote, command: "for i in {1..5}; do echo -n \"Loop \$i \"; date ; sleep 1; done"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.