Сценарий 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'
}
}
}
}
}