Задание FreeStyleJob Jenkins DSL запускает сложный скрипт bash

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

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

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

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

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

Я пытался работать с отличный синтаксис, чтобы избежать всех специальных символов, и он все еще не работает, те же сообщения об ошибках: неожиданный символ, ожидаемый 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-readable-by-Jenkins? Как я уже писал ранее, я перепробовал множество комбинаций, написанных в сети с синтаксисом groovy-lang.


person Bar    schedule 19.03.2020    source источник
comment
Попробуйте проверить свой сценарий оболочки через shellcheck.net.   -  person Jetchisel    schedule 19.03.2020
comment
@Jetchisel Спасибо! Да, я это сделал, и он работает нормально, и даже скрипт работает нормально, когда я использую оболочку ('''СИНТАКСИС СЦЕНАРИЯ'''). Проблема в том, что когда я звоню в файл сценария, он просто не работает   -  person Bar    schedule 19.03.2020


Ответы (2)


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

steps {
  script {
    sh "${WORKSPACE}/complicated_script.sh"
  }
}
person MaratC    schedule 19.03.2020
comment
Это DSL, а не конвейер. Спасибо! - person Bar; 20.03.2020

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

person Bar    schedule 20.03.2020