Я пытаюсь выполнить сценарий оболочки на узле windows, используя Jenkins.
Сценарий bash использует флаг sort -u
на одном из шагов для фильтрации уникальных элементов из существующего массива
list_unique=($(echo "${list[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '))
Примечание. В сценарии используется shebang #!/bin/bash
При вызове сценария из командной строки как - bash test.sh $arg1
Я получил следующую ошибку -
-u Системе не удается найти указанный файл.
Я понимаю, что проблема заключалась в том, что при вышеуказанном вызове sort.exe использовался из командной строки, а не Unix команда сортировки. Чтобы обойти это, я изменил переменную пути в Windows Системные переменные и переместил \cygwin\bin
перед \Windows\System32
Это решило проблему, и приведенный выше вызов дал мне ожидаемые результаты.
Однако, когда тот же сценарий вызывается на этом узле с использованием Jenkins, я снова получаю ту же ошибку
-u Система не может найти указанный файл.
Этап Дженкинса, вызывающий сценарий
stage("Run Test") {
options {
timeout(time: 5, unit: 'MINUTES')
}
steps {
script {
if(fileExists("${Test_dir}")){
dir("${Test_dir}"){
if(fileExists("test.sh")){
def command = 'bash test.sh ${env.arg1}'
env.output = sh(returnStdout: true , script : "${command}").trim()
if (env.output == "Invalid"){
def err_msg = "Error Found."
sh "echo -n '" + err_msg + " ' > ${ERR_MSG_FILE}"
error(err_msg)
}
sh "echo Running tests for ${env.output}"
}
}
}
}
}
}
Пожалуйста, помогите