Einen Ewigen Prozess in einem Jenkins-Build-Schritt starten?


17

Ich führe am Ende einer Jenkins-Bereitstellung einen Shell-Befehl aus, um ein Forever-Skript neu zu starten:

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

Wenn ich das als Benutzer jenkins starte, funktioniert alles einwandfrei und die Konsolenausgabe aus dem Build-Verlauf sagt mir auch, dass das forever-Skript ausgeführt wird. Der Prozess wird jedoch sofort beendet, nachdem die Bereitstellung abgeschlossen und der Ewige Prozess gestoppt wurde.

Was verursacht dieses Verhalten und wie kann ich es beheben?

Antworten:


28

Jenkins beseitigt alle durch den Job verursachten Prozesse.

Dies kann deaktiviert werden, indem die BUILD_IDUmgebungsvariable auf einen anderen Wert gesetzt wird:

export BUILD_ID=dontKillMe

Weitere Informationen finden Sie unter https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller


1
Ist dies eine "saubere" Vorgehensweise oder wird etwas anderes empfohlen?
Patrick

Soweit ich weiß, ist dies die einzige Möglichkeit, den ProcessTreeKiller
rcomblen 26.04.13


Vorher habe ich bekommen. [SSH-Agent] Angehalten. Von Signal 15 getötet. Von Signal 15 getötet. Danach wurde [ssh-agent] gestoppt. Aber es wird immer noch getötet :(
Amit Kumar Gupta

1

Die Frage ist ziemlich alt, aber in diesem Fall gibt es meiner Meinung nach eine bessere Lösung.

Verwenden Sie das Post-Build-Skript-Plug-In

Das Plugin selbst wird seit Anfang 2016 nicht aktualisiert, erledigt aber die Aufgabe und Sie müssen nicht mit Umgebungsvariablen herumspielen. Scheint mir ein bisschen ordentlicher.


0

In den neuen Pipeline-Jobs BUILD_IDfunktioniert die Einstellung nicht mehr. Stattdessen müssen Sie festlegen JENKINS_NODE_COOKIE, dass Jenkins Ihren Prozess nach Beendigung des Jobs nicht beendet.

sh 'export JENKINS_NODE_COOKIE=dontKillMe'
sh 'myProcess'

Oder selektiver:

sh 'JENKINS_NODE_COOKIE=dontKillMe myProcess'

Siehe das Wiki auf ProcessTreeKiller und diesen Kommentar im Jenkins Jira .


0

Versuche es mit:

(
  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 &
) &
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.