Rozpoczynanie wiecznego procesu na etapie kompilacji Jenkins?

17

Uruchomię polecenie powłoki na końcu wdrożenia Jenkins, aby zrestartować skrypt na zawsze:

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

Kiedy uruchamiam to jako użytkownik Jenkins, wszystko działa dobrze, a dane wyjściowe konsoli z historii kompilacji mówią mi również, że skrypt na zawsze działa. Jednak proces zatrzymuje się zaraz po zakończeniu wdrażania i proces na zawsze zostaje zatrzymany.

Co powoduje to zachowanie i jak mogę to naprawić?

Patrick
źródło

Odpowiedzi:

28

Jenkins zabija wszystkie procesy odradzania przez zadanie.

Można to wyłączyć, ustawiając BUILD_IDzmienną środowiskową na coś innego:

export BUILD_ID=dontKillMe

zobacz https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller o szczegóły

rcomblen
źródło
1
Czy jest to „czysty” sposób postępowania, czy coś innego zalecanego?
Patrick,
O ile mi wiadomo, jest to jedyny sposób, aby wyłączyć ProcessTreeKiller
rcomblen
rcomblen jest poprawny, sprawdź wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller
Jan Molak
Wcześniej dostawałem. [ssh-agent] Zatrzymano. Zabity przez sygnał 15. Zabity przez sygnał 15. Po tym zostałem [ssh-agent] Zatrzymany. Ale wciąż jest zabijany :(
Amit Kumar Gupta
1

Pytanie jest dość stare, ale myślę, że w tym przypadku jest lepsze rozwiązanie.

Użyj wtyczki po kompilacji skryptu

Sama wtyczka nie jest aktualizowana od początku 2016 r., Ale spełnia swoje zadanie i nie musisz majstrować przy zmiennych środowiskowych. Wydaje mi się to trochę fajniejsze.

matewilk
źródło
0

W nowych zadaniach rurociągu ustawienie BUILD_IDjuż nie działa. Zamiast tego musisz ustawić, JENKINS_NODE_COOKIEaby zapobiec zabiciu procesu przez Jenkinsa po zakończeniu zadania.

sh 'export JENKINS_NODE_COOKIE=dontKillMe'
sh 'myProcess'

Lub bardziej selektywnie:

sh 'JENKINS_NODE_COOKIE=dontKillMe myProcess'

Zobacz wiki na ProcessTreeKiller i ten komentarz w Jenkins Jira .

jpyams
źródło
0

Spróbuj z:

(
  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 &
) &
Eduardo Cuomo
źródło