前言
本篇文章以本地 Mac 搭建的 Jenkins 為背景,實現本地透過 Jenkins 打包並傳到遠端伺服器並重啟 jar 包。
安裝外掛
首先我們需要在外掛管理中安裝 Publish Over SSH
外掛
安裝好後在系統配置中找到 Publish Over SSH
配置項
這裡開頭的 Passphrase 是通用密碼,表示以下新增的伺服器,若沒填密碼,則都是用該密碼。
接下來配置伺服器連線資訊
然後點選高階,可以單獨設定該伺服器的密碼:
設定完之後,點選儲存。
全域性工具配置
配置JDK
Centos 的 JDK_HOME 如果不知道在哪裡,可以透過 echo $JAVA_HOME
命令檢視
配置 maven
由於我之前沒有在伺服器上安裝 maven,所以我這裡選擇自動安裝
配置專案
在配置專案的構建環境中選擇 Send files or execute commands over SSH after the build runs
這個選項表示在構建部分執行完之後,在執行上傳到遠端伺服器等操作
引數解釋
Source files
預設是 Jenkins workspace 的工作目錄,就是當前專案的根目錄,這個路徑指向的是你想要上傳到遠端伺服器的檔案路徑Remove prefix
去除上層目錄,若不去除,Jenkins 會根據 Source files 的目錄層層建立到 Remote directory 中Remote directory
要上傳到遠端伺服器的目錄,該目錄是相對於系統配置中配置了該伺服器的 Remote directory 開始查詢。Exec command
在遠端伺服器中執行指令碼,這個地方就可以用來寫一些 shell 指令碼,來關閉 SpringBoot 服務的埠,在重啟 SpringBoot 服務。
當配置完之後,我們就可以構建檢視效果了。
shell
這裡貼出一些簡單的 操作 Springboot 關閉、啟動的指令碼
# killPort.sh
#!/bin/bash
port=9004
lsof -t -i:$port
if [ $? -ne 0 ]; then
echo 該埠未執行
else
kill -9 `lsof -t -i:$port`
if [ $? -ne 0 ]; then
echo $port埠關閉失敗
else
echo $port埠關閉成功
fi
fi
# startSpringBoot.sh
#!/bin/sh
cd /home/call-show-api
chmod -R 777 app-1.0-SNAPSHOT.jar
java -Xms128m -Xmx128m -XX:PermSize=128M -XX:MaxPermSize=128M -jar app-1.0-SNAPSHOT.jar
可以將 shell 檔案放到 /home/call-show-api
中,
然後在 Exec command 中寫入
cd /home/call-show-api
sh killPort.sh
# nohup 不能在 sh 中用,否則會無法啟動 Springboot 程式,答案是參考這篇文章的最後一段:https://www.jianshu.com/p/a7d7df97fe4b
nohup sh startSpringBoot.sh > /dev/null 2>&1 &
參考文章
publish over ssh 實現 Jenkins 遠端部署
Jenkins部署碼雲SpringBoot專案到遠端伺服器
[搭建完整jenkins釋出環境(三)]Publish Over SSH外掛使用詳解及常見問題解析
本作品採用《CC 協議》,轉載必須註明作者和本文連結