最近公司在利用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包的相對路徑,

這樣可以在部署成功頁面看到,可以直接點擊下載:

