Jak mogę ponownie uruchomić instancję Tomcat po pomyślnym wdrożeniu?Ponowne uruchamianie Tomcata po pomyślnym wdrożeniu za pomocą Jenkins
Próbowałem już używać skryptu wsadowego, ale instancja Tomcat zostaje zabita po ukończeniu kompilacji.
Jak mogę ponownie uruchomić instancję Tomcat po pomyślnym wdrożeniu?Ponowne uruchamianie Tomcata po pomyślnym wdrożeniu za pomocą Jenkins
Próbowałem już używać skryptu wsadowego, ale instancja Tomcat zostaje zabita po ukończeniu kompilacji.
Twoja odpowiedź znajduje się pod adresem Jenkins ProcessTreeKiller. A more detailed explanation here.
Jest to decyzja projektowa, aby zabić procesy, które są tworzone przez kompilację w celu utrzymania czystego środowiska. Niestety oznacza to, że nie można opuścić procesu (takiego jak Tomcat) uruchomionego po kompilacji.
można wyłączyć tę funkcję globalnie (nie zalecane) poprzez uruchomienie Jenkins tak:
java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war
Albo można to wyłączyć dla poszczególnych przypadków, poprzez uruchomienie procesu w zmiennej środowiskowej Zmieniono:
BUILD_ID=dontKillMe ./catalina restart
Niektóre osoby zgłaszają, że zmiana BUILD_ID
nie wystarczy. Zalecają oni także wyłączające:
JENKINS_COOKIE
JENKINS_SERVER_COOKIE
Edit:
Kolejną kwestią, która może być w grze jest to, że po podłączeniu do zdalnej powłoki, i rozpocząć proces w tej sesji zdalnej powłoki, raz ty (Jenkins) się rozłącza, sesja zostaje zabita, a wszystkie procesy zainicjowane przez sesję również zostają zabite. Aby obejść ten problem, należy odłączyć proces od sesji powłoki.
Jednym ze sposobów jest:
nohup ./catalina restart &
To jak ja ponownym uruchomieniu Tomcat po wdrożeniu przez Jenkinsa.
Mam dwa serwery DEV i QA, gdzie muszę wykonać wdrożenie i ponownie uruchomić kocur. Mam zainstalowanego Jenkinsa na serwerze DEV.
tomcat-restart.ksh
w serwerze, na którym masz zainstalowany Tomcat ..#!/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
Ponowne uruchomienie na serwerze Tomcat Dev.
Ponieważ Jenkins i Tomcat są zainstalowane na tym samym komputerze, bezpośrednio wywołuję skrypt.
W Jenkins iść do Add post-build action
i wybierz Post build task
aw Script
tekstowym dodaj następujące: /apps/apache/tomcat-restart.ksh
Ponowne Tomcat serwer QA.
Ponieważ Jenkins jest zainstalowany na innym serwerze, wywołuję skrypt, aby ponownie uruchomić Tomcat przez Secure Shell.
W Jenkins przejdź do Dodaj post-build action
wybierz Post build task
aw polu tekstowym Script dodać następujące: sshpass -p 'myPassword' ssh -tt [email protected] sudo sh /apps/apache/tomcat-restart.ksh
Musisz zainstalować sshpass
jeśli jej nie już zainstalowany.
Jeśli wszystko poszło dobrze, możesz zobaczyć coś takiego w swoim dzienniku Jenkins.
Running script : /apps/apache/tomcat-restart.ksh
[workspace] $ /bin/sh -xe /tmp/hudson43653169595828207.sh
+ /apps/apache/tomcat-restart.ksh
*********************Restarting Tomcat70.*********************
Tomcat v7.0 is running as process ID 3552
*********************Trying to stop Tomcat.*********************
Stopping Tomcat v7.0 running as process ID 3552...
*********************Getting Tomcat Status.*********************
Tomcat v7.0 is not running
*********************Trying to Start Tomcat*********************
Starting Tomcat v7.0 server...
*********************Getting Tomcat Status*********************
Tomcat v7.0 is running as process ID 17969
Mam nadzieję, że to pomoże.
Kiedy uruchamiasz skrypt wsadowy? Jeśli zrobisz to po "Zdarzeniach po rozbudowie", powinno działać. – Akhil