jenkins(windows) ----> 應用服務器(linux):
1。后台java服務:
與部署在windows上不同的是,這里我選擇了在【構建后操作】中使用ssh向遠程linux服務器傳送jar包和需要執行的命令
sh /root/home/scripts/demo.sh 8007 cp -r /home/soft/project/sr_f5_manage/sr_f5_manage-0.0.1-SNAPSHOT.jar /home/soft/jarpackage
#每次構建都會有日志,為了不越來越多,每次運行項目之前會清空下這個文件nohup.out cp /dev/null nohup.out cd /home/soft/jarpackage nohup java -jar sr_f5_manage-0.0.1-SNAPSHOT.jar & sleep 10
#此處之所以加上sleep 10 是因為一開始雖然構建成功,但是netstat -nlp | grep 8007查看進程發現找不到進程,因為項目啟動需要時間,嘗試着sleep發現就好了
BUILD_ID=dontKillMe:網上很多人說構建結束,服務進程會被kill,需要加上這個才行。我試了下,不要這個時進程也不會被kill
#這個就是上面的demo.sh腳本,根據項目端口查找進程,然后kill掉
port=$1 if [ "${port}" == "" ];then exit 1 fi #根據端口號查詢對應的pid,端口號在執行腳本時做為參數 pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F "/" '{ print $1 }'); #殺掉對應的進程,如果pid不存在,則不執行 if [ -n "$pid" ]; then kill -9 $pid; fi
ps:這樣配置之后,構建還是會有問題,如圖。jenkins不會正常結束構建,而是直到超時:
這時就需要在【高級】選項那里勾選上Exec in pty,這樣就可以正常了。參考地址: https://blog.csdn.net/u013066244/article/details/52788407
2.前端:我們前端使用tomcat,和后端沒什么不一樣,只有配置的腳本不一樣。如圖,因為比較簡單,就不單獨貼出來了
圖中第一行命令是關掉tomcat服務,如果tomcat本身沒有運行則構建會報錯,因此需要先判斷下tomocat服務是否正在運行,我直接用上面的demo.sh腳本去代替這一步
sh /root/home/scripts/demo.sh 8080
Source files的匹配規則可以了解下:
* matches zero or more characters, ? matches one character.