Починати вічно процес на етапі побудови Дженкінса?


17

Я виконую команду shell в кінці розгортання Дженкінса, щоб перезапустити вічний сценарій:

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

Питання досить старе, але в цьому випадку є кращий варіант вирішення.

Використовуйте модуль сценарію після складання

Сам плагін не оновлюється з початку 2016 року, але він робить цю роботу, і вам не доведеться возитися зі змінними середовища. Здається, мені трохи акуратніше.


0

У нових робочих місцях трубопроводу налаштування BUILD_IDбільше не працює. Натомість вам потрібно встановити, JENKINS_NODE_COOKIEщоб Дженкінс не вбив ваш процес, коли робота закінчиться.

sh 'export JENKINS_NODE_COOKIE=dontKillMe'
sh 'myProcess'

Або, більш вибірково:

sh 'JENKINS_NODE_COOKIE=dontKillMe myProcess'

Дивіться вікі на ProcessTreeKiller та цей коментар у Дженкінс Джирі .


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.