簡體   English   中英

通過 Jenkins 的 shell 腳本在遠程服務器中執行 bash 腳本

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

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