Начиная вечный процесс на этапе сборки Jenkins?


17

Я запускаю команду оболочки в конце развертывания Jenkins, чтобы перезапустить сценарий навсегда:

npm install && forever stop app.js && forever start -a -l /var/log/forever.log app.js

Когда я запускаю это как пользователь jenkins, все работает нормально, и вывод консоли из истории сборки также говорит мне, что скрипт работает вечно. Однако процесс останавливается сразу после завершения развертывания, и процесс навсегда останавливается.

Что вызывает такое поведение и как я могу это исправить?

Ответы:


28

Дженкинс убивает всех процессов, вызванных работой.

Это можно отключить, установив BUILD_IDпеременную окружения в другое значение:

export BUILD_ID=dontKillMe

см. https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller для получения подробной информации.


1
Это «чистый» способ сделать или что-то еще рекомендуется?
Патрик

Насколько я знаю, это единственный способ отключить ProcessTreeKiller
rcomblen

rcomblen правильно, проверьте wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller
Ян Молак

До этого я получал. [ssh-agent] остановлен. Убит по сигналу 15. Убит по сигналу 15. После этого я получил [ssh-agent] Остановлен. Но его все еще убивают :(
Амит Кумар Гупта

1

Вопрос довольно старый, но я думаю, что в этом случае есть лучшее решение.

Используйте плагин Post-Build Script

Сам плагин не обновляется с начала 2016 года, но он выполняет свою работу, и вам не нужно возиться с переменными среды. Кажется, немного аккуратнее для меня.


0

В новых конвейерных заданиях настройка BUILD_IDбольше не работает. Вместо этого вам нужно настроить, JENKINS_NODE_COOKIEчтобы Дженкинс не убивал ваш процесс, когда работа завершится.

sh 'export JENKINS_NODE_COOKIE=dontKillMe'
sh 'myProcess'

Или, более избирательно:

sh 'JENKINS_NODE_COOKIE=dontKillMe myProcess'

Смотрите вики на ProcessTreeKiller и этот комментарий в Jenkins Jira .


0

Попробуйте с:

(
  set -e
  export BUILD_ID=dontKillMe
  export JENKINS_NODE_COOKIE=dontKillMe
  npm install
  forever stop app.js
  forever start -a -l /var/log/forever.log app.js &
) &
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.