2016-11-22 1 views
0

Ich möchte Job auf Jenkins machen, der Server (MockServer auf WireMock) startet.Spawning-Prozess im Hintergrund auf Jenkins - Job, der nicht in der Warteschlange bleiben wird

Server wird von * .jar-Datei gestartet, von Terminal wie folgt.

java -jar serverLaunch.jar 

Es übernimmt meine Konsole. Um zu vermeiden, dass ich dies modifiziere und:

java -jar serverLaunch.jar &>/dev/null & 

Und das funktioniert für mich auf meinem lokalen PC. Jetzt möchte ich es zu Jenkins bewegen.

Wenn ich versuche, dies zu tun, von "Shell-Befehl" -Block in Jenkins Job dann:

a) java -jar serverLaunch.jar

  • I Aufgabe in der Warteschlange in meinem Jenkins gesperrt habe, und ich will nicht, dass aber der Server startet und funktioniert.

b) java -jar serverLaunch.jar &>/dev/null &

  • Job endet mit Erfolg, aber mein Server ist nicht mehr am Leben.

Ich habe diesen Befehl auch in .sh-Skript und .rb-Skript eingeschlossen. Irgendeine Idee, wie es funktioniert?


Ich habe dies versucht: https://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build

Und dann in Jenkins "Shell-Skript":

daemonize -E BUILD_ID=dontKillMe /bin/bash launch.sh 

Aber es geht auch, aber Server ist nicht mehr am Leben.

Antwort

2

Ich hatte "Variablen Injizieren Umgebung zu dem Build-Prozess" zu überprüfen und hinzufügen:

build_ID = dontKillMe

Jetzt funktioniert es.

-1

Versuchen Sie es mit nohup z.B .: nohup java -jar serverLaunch.jar &

, dass der Prozess beendet wird, wenn die Eltern-Shell-Prozess beendet (was ich vermute, ist Ihr Problem) verhindern soll.

+0

Wenn ich: 'nohup java -jar serverLaunch.jar &' dann Task endet mit Erfolg, aber ich kann keine Verbindung zum Server cuz offline – F1sher

+0

nohup hinterlässt eine Protokolldatei namens nohup.out in dem Verzeichnis, aus dem Sie es gestartet . Vielleicht lohnt es sich, einen Blick darauf zu werfen, um zu sehen, ob ein Fehler gemeldet wird. – Tom

+1

Nein, es funktioniert nicht. Jenkins tötet den Prozess, der im Job gestartet wurde, selbst wenn er mit nohup (oder "daemonize" wie das OP) dämonisiert wurde, wenn BUILD_ID env var nicht im Job gesetzt ist. –

0

Ein weiterer effektiver Ansatz wäre das Hinzufügen einer Post-Build-Aktion, die eine Shell ausführt, die den Server hervorbringt.

Verwandte Themen