Neustart von Tomcat nach einer erfolgreichen deployment mit Jenkins
Wie kann ich Jenkins starten Sie den Tomcat-Instanz nach einer erfolgreichen Implementierung?
Ich habe bereits versucht mit einem batch-Skript, aber die Tomcat-Instanz wird getötet, wenn das build abgeschlossen ist.
Wenn Sie das batch-Skript? Wenn Sie es tun, nach der "Post-build-Ereignisse", sollte es funktionieren.
InformationsquelleAutor Joachim | 2014-10-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Antwort liegt in Jenkins ProcessTreeKiller. Ein genauere Erklärung hier.
Es ist eine design-Entscheidung, zu töten alle Prozesse, die erzeugt werden, indem das bauen, pflegen eine saubere Umwelt. Leider bedeutet das, dass Sie nicht verlassen kann, einen Prozess (wie z.B. Tomcat) ausgeführt wird, nachdem die build.
Können Sie diese Funktion deaktivieren Global (nicht empfohlen), durch die Einführung Jenkins wie diese:
java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war
Oder Sie können deaktivieren Sie diese auf einer pro-Fall-basis durch den Start des Prozesses mit einem veränderten environment-variable:
BUILD_ID=dontKillMe ./catalina restart
Einige Leute berichten jedoch, dass eine änderung
BUILD_ID
ist nicht genug. Sie empfehlen auch entfernen:JENKINS_COOKIE
JENKINS_SERVER_COOKIE
Edit:
Ein weiteres Problem, das könnte man bei spielen ist, dass, wenn Sie eine Verbindung zu remote-shell und starten Sie einen Prozess, der remote-shell-Sitzung, sobald Sie (Jenkins) trennt, wird die session gekillt und alle Prozesse hervorgebracht, die von der Sitzung sind getötet zu werden. Um zu bekommen, dass Problem, Sie müssen sich trennen, der Prozess von der shell-Sitzung.
Eine Möglichkeit ist:
nohup ./catalina restart &
Verbinden Sie sich mit remote-shell? Bearbeitet die Antwort auf remote-shell zu berücksichtigen
InformationsquelleAutor Slav
Dies ist, wie ich bin, Neustart Tomcat, nachdem deployment via jenkins.
Ich habe zwei Server DEV-und QA, wo ich tun müssen, um die Bereitstellung und starten Sie tomcat neu. Ich habe Jenkins installiert in den DEV-server.
tomcat-restart.ksh
in der server, auf dem Sie tomcat installiert..#!/bin/bash
echo "*********************Restarting Tomcat70.******************"
sh /apps/apache/sss-tomcat70.ksh status
echo "Trying to stop Tomcat."
sh /apps/apache/sss-tomcat70.ksh stop
echo "Getting Tomcat Status."
sh /apps/apache/sss-tomcat70.ksh status
echo "Trying to Start Tomcat"
sh /apps/apache/sss-tomcat70.ksh start
sleep 2
echo "Getting Tomcat Status"
sh /apps/apache/sss-tomcat70.ksh status
Da Jenkins und Tomcat installiert ist, in der gleichen Maschine, bin ich direkt nach dem aufrufen des Skripts.
In Jenkins gehen
Add post-build action
und wählen SiePost build task
und in derScript
Textfeld fügen Sie den folgenden :/apps/apache/tomcat-restart.ksh
Da Jenkins installiert ist, in der anderen server, ich rufe das script zum restart von Tomcat über die Secure Shell.
In Jenkins gehen Sie zu Add
post-build action
wählen SiePost build task
und in das Skript-Textfeld fügen Sie die folgenden Schritte aus :sshpass -p 'myPassword' ssh -tt username@hostname sudo sh /apps/apache/tomcat-restart.ksh
Zu installieren, müssen Sie
sshpass
wenn es nicht bereits installiert ist.Wenn alles gut gegangen ist, dann können Sie sehen, etwas ähnliches in Ihrem Jenkins melden.
Hoffe, das hilft.
InformationsquelleAutor Zeeshan