安裝外掛
Maven Integration(jenkins整合maven的外掛,用於新增《構建一個maven專案》的選單)
Publish Over SSH(用於連線遠端伺服器)
Deploy to container(用於把打包的應用發佈到遠端伺服器)
注意:設定的路徑都是jenkins機器,非遠端程式碼部署機器
選擇構建一個maven專案,確認,即可開始設定專案參數(前面安裝的外掛)
新增 Git 倉庫(這裏我用的公共倉庫,私有倉庫需要新增域和使用者資訊)
構建觸發器
設定maven命令
發佈到遠端伺服器的設定(下面 下麪還有個exec command,專案啓動的指令碼,稍後設定)
啓動指令碼
#!/bin/bash
port=9898 #專案啓動埠
echo "check $port"
grep_port=`netstat -tlpn | grep "\b$port\b"`
echo "grep port is $grep_port"
if [ -n "$grep_port" ]
then
echo "埠 $port 在使用"
netstat -nlp |grep :9898 |grep -v grep|awk '{print $7}' |awk -F '/' '{print $1}' |xargs kill -9
echo "kill 掉$port 埠"
else
echo "埠沒有被使用"
fi
echo "開始重新啓動"
# 此處要加BUILD_ID=dontKillMe 否則jenkins不會將專案啓動下去
BUILD_ID=dontKillMe nohup java -jar /home/jenkins_deploy/xxx/xxx-0.0.1.jar &
echo "jenkins 自動化部署成功"
需要注意的點:在部署多臺機器的時候,可能會出現狀態爲 unstable 的狀態,錯誤提示爲
ERROR: Exception when publishing, exception message [Exec timed out or was interrupted after 120,000ms]
阻塞了後面的機器繼續發佈和啓動,需要在設定遠端機器的高階設定裡勾上 Exec in pty 如下圖
新增了這個設定後,雖然結果提示Finished:success,但是專案沒有啓動
需要在指令碼裡新增sleep 1即可成功啓動
#!/bin/bash
port=9898 #專案啓動埠
echo "check $port"
grep_port=`netstat -tlpn | grep "\b$port\b"`
echo "grep port is $grep_port"
if [ -n "$grep_port" ]
then
echo "埠 $port 在使用"
netstat -nlp |grep :9898 |grep -v grep|awk '{print $7}' |awk -F '/' '{print $1}' |xargs kill -9
echo "kill 掉$port 埠"
else
echo "埠沒有被使用"
fi
echo "開始重新啓動"
# 此處要加BUILD_ID=dontKillMe 否則jenkins不會將專案啓動下去
BUILD_ID=dontKillMe nohup java -jar /home/jenkins_deploy/xxx/xxx-0.0.1.jar &
echo "jenkins 自動化部署成功"
sleep 1
設定完成後回到專案內
點選build now 下面 下麪出現當前次構建的進度,點選進去就能看到構建的詳情了
日誌檔案(這裏分別部署到了兩臺遠端機器,兩個不同的埠9898和9899)