Запуск фонового процесса в конвейере

15

Я ищу способ запуска Java-процесса в фоновом режиме, используя декларативный конвейер Jenkins. Ниже приведен фрагмент кода

stage('Deploy'){
        steps{
            script{
                withEnv(['BUILD_ID=dontkill']) {
                    sh "nohup java -jar test-0.0.1-SNAPSHOT.war &"
                }
            }
        }
}

Уже известно о ProcessTreeKiller о Jenkins и каждый ответ предлагает сделать то же самое. Я попытался использовать среду внутри блока шагов без удачи.

Дженкинс версия: 2.60.1

Трубопроводный плагин: 1.1.7

Любая помощь очень ценится.

Dharanidhar
источник
Что происходит? Сообщение об ошибке? Тихая неудача?
B Layer
У меня нет запущенного процесса Java. Это последний этап в моем конвейере, поэтому я предполагаю, что Дженкинс запускает его и завершает его в следующий момент.
Дхаранидхар
Что происходит, когда вы запускаете команду непосредственно на подчиненном устройстве? Войдите в агент / подчиненный хост, перейдите в рабочую область задания (или, если оно было очищено, скопируйте вручную в файл war где-нибудь ... /tmpнапример) и запустите все в двойных кавычках.
Слой
Кроме того, если рабочая область не была удалена, найдите файл с именем nohup.out в любом каталоге, в котором будет выполняться команда оболочки. nohup автоматически регистрируется в таком файле, когда выходные данные не перенаправляются иначе.
Слой
@BlairM тот же скрипт работает нормально, когда я пробую его с пользователем jenkins через неинтерактивную оболочку без логина. Запуск в двойных кавычках не имеет значения. nohup.out присутствует, но это 0 КБ.
Дхаранидхар

Ответы:

16

Любой, кто сталкивается с той же проблемой и использует проект конвейера, устанавливается JENKINS_NODE_COOKIEвместо BUILD_ID.

Dont тратить время установки HUDSON_COOKIE, HUDSON_SERVER_COOKIE, JENKINS_COOKIEили JENKINS_SERVER_COOKIE. Никто из них не работает на трубопроводном проекте.

Обратитесь к https://issues.jenkins-ci.org/browse/JENKINS-28182 для получения более подробной информации.

Dharanidhar
источник
1
Вау, это что-то внутри бейсбола прямо там. Хорошо знать.
Слой