Команда сортировки в скрипте bash не работает при вызове из Jenkins - PullRequest
1 голос
/ 05 февраля 2020

Я пытаюсь выполнить сценарий оболочки на узле 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}"
          }
        }
      }
    }
  }
}

Пожалуйста, помогите

...