Выполнение сценария bash на удаленном сервере с помощью сценария оболочки Jenkins - PullRequest
0 голосов
/ 23 января 2020

Я пытался выполнить сценарий на удаленном сервере с помощью сценария оболочки задания Jenkins. Когда я выполнил, сборка прошла успешно, но я не получил ожидаемый результат. Параметр с именем "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]}"

OutPut

polling
processing

Я прошел через множество вопросов и ответов, но не смог найти правильного решения. Таким образом, любая помощь будет оценена.

1 Ответ

1 голос
/ 23 января 2020

В качестве обходного пути вы можете создать конвейер вместо проекта фристайл, в котором вы можете писать декларативные или скриптовые конвейеры.

Вам нужно установить этот плагин в 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"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...