前言
最近在鼓搗 jenkins 的時候,遇到了很多問題,這個問題搞的好難受,就是我寫的項目啓動腳本,在服務器本地可以執行,但是在jenkins上構建後執行,項目就啓動不起來。
搞得我要裂開了,後來站在巨人的肩膀上,終於找到了解決方案!!!
解決方案
問題發生的前提:你的 jenkins 所在的服務器和 你部署項目的服務器是同一臺(我自己鼓搗所以就用了同一臺,咱 們項目開發的時候,都是服務器分開的),所以咱們很少遇到這個問題。
正如題目寫的,就是 jenkins 在構建結束之後,會殺死它創建的子進程,所以你寫的後臺執行的腳本也會被kill掉。
方案一:
# 在執行的腳本前邊加入:不要殺死我 ~
export BUILD_ID=dontKillMe
# 要執行的腳本命令
nohup java -jar veryGoodItem.jar > logTest.log 2>&1 &
方案二:
# 臨時改變BUILD_ID值,使得Jenkins不會找到並結束掉run.sh啓動的後臺進程
OLD_BUILD_ID=$BUILD_ID
echo $OLD_BUILD_ID
BUILD_ID=dontKillMe
# 要執行的腳本命令
nohup java -jar veryGoodItem.jar > logTest.log 2>&1 &
# 改回原來的BUILD_ID值
BUILD_ID=$OLD_BUILD_ID
echo $BUILD_ID
最後和大家說倆句:遇到問題的時候,不能想當然,覺得不是那個問題,還是要多嘗試,說不定你就成功了。畢竟行動見真知,奧裏給!!!