Сценарий Jenkins sh fail с "не может запускать программу nohup" на окнах

У меня есть окна 10, и я хочу выполнить команду sh в файле Jenkins из конвейера Jenkins, используя bash для Ubuntu для окон, но он не работает

У меня есть следующий этап в моем проекте Jenkins:

stage('sh how to') {
        steps {
            sh 'ls -l'
        }
    }

Сообщение об ошибке:

[C:\Program Files (x86)\Jenkins\workspace\pipeascode] Запуск оболочки scriptНевозможно запустить программу "nohup" (в каталоге "C:\Program Files (x86)\Jenkins\workspace\pipeascode" ): CreateProcess error = 2, Le fichier spécifié est introuvable

Я попытался изменить исполняемый файл параметра Jenkins- > shell с

C:\Windows\System32\bash.exe

но такая же ошибка...

как запустить sh script с помощью окон 10 bash?

Ответ 1

Из очень быстрого поиска похоже, что ваша ошибка связана со следующей проблемой: JENKINS-33708

Основная причина выглядит так: шаг sh не поддерживается в Windows. Вы можете использовать bat или установить Cygwin например.

Тем не менее в предыдущей ссылке были предложены два решения, предлагающие выполнить следующие шаги:

  • Установить git - bash
  • Убедитесь, что папка Git\bin (т.е.: C:\Program Files\Git\bin) находится в глобальном пути поиска, чтобы Дженкинс нашел sh.exe
  • Сделайте nohup доступным для Дженкинса, сделав следующее в git - bash (соответствующим образом адаптируйте свои пути):
    • mklink "C:\Program Files\ Git\ bin\nohup.exe" "C:\Program Files\ Git\usr\bin\nohup.exe"
    • mklink "C:\Program Files\ Git\ bin\msys-2.0.dll" "C:\Program Files\ Git\usr\bin\msys-2.0.dll"
    • mklink "C:\Program Files\ Git\ bin\msys-iconv-2.dll" "C:\Program Files\ Git\usr\bin\msys-iconv -2.dll"
    • mklink "C:\Program Files\ Git\ bin\msys-intl-8.dll" "C:\Program Files\ Git\usr\bin\msys-intl -8.dll"

В зависимости от вашей установки вам, возможно, придется использовать следующие пути:

  • mklink "C:\Program Files\ Git\ cmd\nohup.exe" "C:\Program Files\ Git\usr\bin\nohup.exe"
  • mklink "C:\Program Files\ Git\ cmd\msys-2.0.dll" "C:\Program Files\ Git\usr\bin\msys-2.0.dll"
  • mklink "C:\Program Files\ Git\ cmd\msys-iconv-2.dll" "C:\Program Files\ Git\usr\bin\msys-iconv -2.dll"
  • mklink "C:\Program Files\ Git\ cmd\msys-intl-8.dll" "C:\Program Files\ Git\usr\bin\msys-intl -8.dll"

Ответ 2

В Git для Windows мне пришлось добавить C:\Program Files\Git\bin в PATH среды PATH подчиненного узла в Jenkins (чтобы получить доступ к sh), а затем добавить C:\Program Files\Git\usr\bin в PATH локально на ведомом компьютере Windows (чтобы получить доступ к nohup).

Ответ 3

С помощью Git для Windows 2.16.2 я смог добавить C:\Program Files\Git\usr\bin в PATH (а не C:\Program Files\Git\bin), и, следовательно, мои команды sh работают как в FreeStyle, так и в FreeStyle. Трубопровод строит. Нет mklink было необходимо. (Источник)

Ответ 4

Переключение sh на bat сработало для меня - я запускаю Jenkins на Windows. Но только после того, как я решил проблему, вызванную тем, что я неправильно настроил свои инструменты (maven и JDK) в Jenkins.

Ответ 5

Если вы работаете в Windows, просто измените sh на bat. это будет работать как ожидалось. Пример:

pipeопровод {   агент любой   Этапы {       этап ("этап компиляции") {

        steps {
            withMaven(maven : 'apache-maven-3.6.1') {
                bat'mvn clean compile'
            }
        }
    }

} }