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ć?

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


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


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.


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 .


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 &
) &
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.