最近接觸新的dubbo項目,項目初始時,測試環境的提供者服務發布較頻繁,奈何公司又沒有自動發布工具,遂自己在測試環境中搭建了Jenkins用於dubbo服務的發布。由於第一次使用,過程中也遇到了一些問題,記錄與此
Q1、DubboShutdownHook
問題描述
打包/停止原進程/拷貝/解壓 過程一切正常。在執行啟動腳本正常執行,可惜服務就是未正常啟動,手動啟動正常。翻查啟動日志發現一段警告信息:
DubboShutdownHook WARN Unable to register Log4j shutdown hook because JVM is shutting down. Using SimpleLogger
解決
初步判斷是與Log4j相關,最終發現與項目中log4j2.xml相關。可移步:http://javahonk.com/unable-to-register-shutdown-hook-because-jvm-is-shutting-down/
可以log4j2.xml中添加shutdownHook=”disable”
完整內容如下
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO" shutdownHook="disable">
...
</Configuration>
bingo smile
Q2、Jenkins構建完成后殺死衍生進程
問題描述
在解決完上一個問題后,沒有出現那一段警告信息了,本以為可以偷懶了,誰知道dubbo服務依舊還是沒有啟動,這時候翻查日志,對比手動啟動的日志無任何不同,陷入沉思。依舊是,正常執行腳本,日志也說明已經啟動,可就是沒有該進程,難道是被什么給殺掉了?
於是帶着這個思路去搜索,Jenkins殺死進程
發現了一條關鍵信息:
https://blog.csdn.net/u011138533/article/details/53941123
Jenkins默認會在Build結束后Kill掉所有的衍生進程
原來如此!!
解決
在execute shell輸入框中加入BUILD_ID=DONTKILLME
完整如下: