freeStyleJob Jenkins DSL запускает сложный скрипт bash - PullRequest
0 голосов
/ 19 марта 2020

Мне нужно запустить сложный сценарий bash из моей работы в Jenkins:

steps {
    shell(readFileFromWorkspace('./complicated_script.sh'))
}

Вызов работает отлично, проблема в том, что, когда я запускаю начальное задание, задание не выполняется из-за неверный синтаксис скрипта Bash.

Скрипт написан хорошо, и он намного сложнее команд "echo".

Запись сценария между командами shell () работает нормально, но это слишком большой сценарий, чтобы держать его там - ему нужен собственный файл.

Я пытался работать с groovy синтаксисом , чтобы экранировать все специальные символы, и он все еще не работает, те же сообщения об ошибках: неожиданный символ, ожидаемый EOF, но вместо этого ...

Оглядываясь вокруг, чтобы найти примеры сложного сценария bash от Jenkins Job DSL, и я не нашел.

Часть сценария:

#!/bin/bash -x
set -e

SERVER="hostname.example.com"
TLS_SSL_ARRAY=(tlsv1.0 tlsv1.1 tlsv1.2 sslv2 sslv3)
url="https://${SERVER}/api/test"
RESULT_FILE="output_file.txt"

for version in ${TLS_SSL_ARRAY[*]}
do
    check_url=$(curl --${version} ${url})
    if [ $? -eq 0 ]; then
    echo "${version}- Enabled" >> $RESULT_FILE 
else
    echo "${version} - Disabled" >> $RESULT_FILE 
fi

done

sudo -u ${username} scp -o StrictHostKeyChecking=no $RESULT_FILE hostname2.example.com:/tmp/

Как я могу "преобразовать" "этот bash скрипт для bash -читабельно Дженкинса? Как я уже писал ранее, я пробовал много комбинаций, как написано в синтаксической сети groovy -lang.

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

Хорошо, поэтому публикуем здесь ответ на тот случай, если кто-то также столкнется с этой проблемой: проблема заключалась в конфигурации в подключаемом модуле DSL на начальном этапе задания - по ошибке я настроил подключаемый модуль для чтения всех файлов в папке вместо чтения только файлы *.groovy.

0 голосов
/ 19 марта 2020

Попробуйте это:

steps {
  script {
    sh "${WORKSPACE}/complicated_script.sh"
  }
}
...