最近公司在利用jenkins自動部署springboot應用,以前別人配的那個jenkins雖說可以正常部署,但是多次反復部署之后jenkins會報錯,提示內存不足:
Maven JVM terminated unexpectedly with exit code 137
原因是因為jenkins沒有配置部署新的應用前先把舊的應用進程先kill掉而導致在服務器上有多個應用進程。因此自己決定摸索如何配置jenkins可以每次部署都把舊進程kill掉再啟動新進程。
一、首先需要先配置好jenkins的基本配置,這些就不在這里一一詳述了,只寫一個Publish over SSH的
1、先安裝好該插件 :Publish over SSH
2、配置如下:
點開下面的高級配置登錄linux服務器的密碼。
2、然后就是配置部署項目的東西了。
配置從源碼庫拉取代碼:
構建環境中勾選,代碼構建的過程中會將日志打印出來
Pre Steps和Build:
Post Steps:
Exec command中是要通過SSH去服務器上執行的腳步以及腳本文件;
Source files配置:target/xxx-0.0.1-SNAPSHOT.jar 項目jar包名
Remove prefix:target/
Remote directory: 代碼應用服務器的目錄地址,
Exec command:應用服務器對應的腳本。
以下是腳本文件內容:
stop.sh
#!/bin/bash echo "stop SpringBoot BAppApiServerApplication" pid=`ps -ef | grep ejoyst-bappapi-gateway.jar | grep -v grep | awk '{print $2}'` echo “舊應用進程id:$pid” if [ -n "$pid" ] then kill -9 $pid fi
start.sh
#!/bin/bash export JAVA_HOME=/usr/java/jdk1.8.0_161 echo ${JAVA_HOME} echo "授權當前用戶" chmod 777 /opt/deploy/ejoyst-bappapi-gateway.jar echo "執行...." cd /opt/deploy/ nohup ${JAVA_HOME}/bin/java -jar ejoyst-bappapi-gateway.jar > /dev/null & echo "啟動成功"
構建后操作中 配置Archive the artifacts:內容是當前構建應用的jar包或者war包的相對路徑,
這樣可以在部署成功頁面看到,可以直接點擊下載: