Начиная вечный процесс на этапе сборки 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 для получения подробной информации.

rcomblen
источник
1
Это «чистый» способ сделать или что-то еще рекомендуется?
Патрик
Насколько я знаю, это единственный способ отключить ProcessTreeKiller
rcomblen
rcomblen правильно, проверьте wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller
Ян Молак
До этого я получал. [ssh-agent] остановлен. Убит по сигналу 15. Убит по сигналу 15. После этого я получил [ssh-agent] Остановлен. Но его все еще убивают :(
Амит Кумар Гупта
1

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

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

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

matewilk
источник
0

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

sh 'export JENKINS_NODE_COOKIE=dontKillMe'
sh 'myProcess'

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

sh 'JENKINS_NODE_COOKIE=dontKillMe myProcess'

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

jpyams
источник
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 &
) &
Эдуардо Куомо
источник