回答
你的答案在於Jenkins ProcessTreeKiller。 A more detailed explanation here。
這是一個設計決定,殺死構建產生的任何進程,以維持一個乾淨的環境。不幸的是,這意味着你不能在構建之後運行一個進程(比如Tomcat)。
可以在全局範圍禁用此功能(不推薦)通過推出詹金斯這樣的:
java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war
或者你可以在每個個案基礎禁用此功能,通過一個變化的環境變量啓動過程:
BUILD_ID=dontKillMe ./catalina restart
但有人報告說,改變BUILD_ID
是不夠的。他們還建議取消設置:
JENKINS_COOKIE
JENKINS_SERVER_COOKIE
編輯:
可能在發揮作用的另一個問題是,當你連接到遠程shell,然後遠程shell會話啓動一個進程,一旦你(詹金斯)斷開連接,會話被終止並且會話產生的所有進程也被終止。爲了解決這個問題,你需要解除與shell會話的關聯。
一種方法是:
nohup ./catalina restart &
這是我如何通過詹金斯部署後重新啓動Tomcat的。
我有兩臺服務器DEV和QA,我需要做部署並重新啓動tomcat。我有詹金斯安裝在DEV服務器。
- 首先您需要在Jenkins中安裝Post build task插件。
- 然後在你的tomcat安裝在服務器創建此腳本
tomcat-restart.ksh
...
#!/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
重啓動Tomcat的開發服務器上。
由於Jenkins和Tomcat安裝在同一臺機器上,我直接調用腳本。
在詹金斯去Add post-build action
並選擇Post build task
並在Script
文本框中添加以下內容:/apps/apache/tomcat-restart.ksh
在QA服務器重新啓動Tomcat的。
由於Jenkins安裝在不同的服務器上,我正在調用腳本通過Secure Shell重新啓動Tomcat。
在詹金斯去添加post-build action
選擇Post build task
和腳本文本框中添加以下內容:sshpass -p 'myPassword' ssh -tt [email protected] sudo sh /apps/apache/tomcat-restart.ksh
您需要安裝sshpass
如果尚未安裝。
如果一切正常,那麼你可能會在你的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
希望這會有所幫助。
- 1. 如何讓jenkins在部署後重新啓動tomcat?
- 2. 從Jenkins或網站重新啓動Tomcat
- 3. '成功部署後需要部署項目'才能啓動'
- 4. 春季啓動Tomcat部署
- 5. 無法使用jenkins在tomcat中成功部署war文件
- 6. 從Tomcat重新啓動Tomcat
- 7. IntelliJ,在本地主機上部署,無需重新啓動tomcat
- 8. 如何在重新啓動tomcat時控制webapp部署順序
- 9. 爲什麼Hudson/Jenkins需要在部署插件後重新啓動?
- 10. 重新部署戰爭時需要重啓tomcat嗎?
- 11. Pitfals將應用程序部署/重新部署到Tomcat而無需重新啓動
- 12. Jenkins在成功部署後從另一個repo運行
- 13. Tomcat/Spring - 重新啓動Webapp
- 14. Glassfish需要在部署ICEFaces後重新啓動
- 15. 需要在fuill web部署後重新啓動IIS 7
- 16. 從Nexus部署到Tomcat(通過Jenkins/Hudson)
- 17. capistrano部署後的tomcat刷新目錄
- 18. Tomcat服務器遠程重新部署
- 19. 與其他用戶重新啓動時啓動Tomcat
- 20. WAR部署完成後,是否有辦法讓Tomcat啓動應用程序?
- 21. 重新部署到外部硬盤驅動器後,MySQL無法啓動RPi
- 22. 重新部署彈簧引導服務而不重新啓動?
- 23. 有沒有簡單的方法讓Apache Tomcat在部署後自動重啓?
- 24. 有沒有在Tomcat 9中部署jar而不重新啓動的方法?
- 25. Tomcat 7與澤西部署啓動速度慢
- 26. Maven在Jenkins上構建後將webapp部署到Tomcat
- 27. Azure WebApps與Jenkins部署
- 28. TeamCity安裝成功,但在關機後無法重新啓動
- 29. 重新啓動第一功能後完成第二
- 30. Apache Tomcat部署後出錯
何時運行批處理腳本?如果你在「生成後事件」之後執行它,它應該可以工作。 – Akhil 2014-10-09 12:44:20