Используя конвейер Jenkins, запуск файла jar в фоновом режиме с использованием nohup не запускает jar
Я использую Jenkins версии 2.121.1 с конвейером на MacOS-HighSierra. Мой проект зависит от сервера входа в систему, который является артефактом Springboot и работает локально, который я хотел бы запустить перед сборкой. У меня есть сценарий оболочки для запуска сервера входа. Сценарий оболочки прекрасно работает из командной строки. Когда я запускаю то же самое в контексте Дженкинса, это терпит неудачу. Вот код в сценарии оболочки runloginserver:
nohup java -jar /absolute/path/login-module/login-api.jar >/dev/null 2>&1 &
И в моем Jenkinsfile я определил сцену следующим образом:
stage('Launch-login') {
steps {
script{
withEnv(['JENKINS_NODE_COOKIE=dontkill']) {
sh '/absolute/path/runloginserver '
}
}
}
}
Консольный вывод не имеет ошибок. Nohup.out не генерируется. И сервер не был запущен
1 ответ
Вы можете столкнуться с Jenkins ProcessTree Killer. Это "особенность" Jenkins, которая убивает любые фоновые процессы, запущенные во время сборки, когда сборка завершается, даже если процесс был запущен с nohup или иным образом отделен от своего родительского процесса. В ссылке есть инструкции о том, как отключить это поведение - его можно отключить глобально или только для определенного процесса.