Mac Jenkins 部署 SpringBoot 應用到遠端伺服器

邢闖洋發表於2021-12-17

前言

本篇文章以本地 Mac 搭建的 Jenkins 為背景,實現本地透過 Jenkins 打包並傳到遠端伺服器並重啟 jar 包。

安裝外掛

首先我們需要在外掛管理中安裝 Publish Over SSH 外掛

Mac Jenkins 部署 SpringBoot 應用到遠端伺服器

安裝好後在系統配置中找到 Publish Over SSH 配置項

Mac Jenkins 部署 SpringBoot 應用到遠端伺服器

這裡開頭的 Passphrase 是通用密碼,表示以下新增的伺服器,若沒填密碼,則都是用該密碼。

接下來配置伺服器連線資訊

Mac Jenkins 部署 SpringBoot 應用到遠端伺服器

然後點選高階,可以單獨設定該伺服器的密碼:

Mac Jenkins 部署 SpringBoot 應用到遠端伺服器

設定完之後,點選儲存。

全域性工具配置

配置JDK

Centos 的 JDK_HOME 如果不知道在哪裡,可以透過 echo $JAVA_HOME 命令檢視

Mac Jenkins 部署 SpringBoot 應用到遠端伺服器

Mac Jenkins 部署 SpringBoot 應用到遠端伺服器

配置 maven

由於我之前沒有在伺服器上安裝 maven,所以我這裡選擇自動安裝
Mac Jenkins 部署 SpringBoot 應用到遠端伺服器

配置專案

在配置專案的構建環境中選擇 Send files or execute commands over SSH after the build runs

這個選項表示在構建部分執行完之後,在執行上傳到遠端伺服器等操作
Mac Jenkins 部署 SpringBoot 應用到遠端伺服器

Mac Jenkins 部署 SpringBoot 應用到遠端伺服器

引數解釋

  1. Source files
    預設是 Jenkins workspace 的工作目錄,就是當前專案的根目錄,這個路徑指向的是你想要上傳到遠端伺服器的檔案路徑

  2. Remove prefix
    去除上層目錄,若不去除,Jenkins 會根據 Source files 的目錄層層建立到 Remote directory 中

  3. Remote directory
    要上傳到遠端伺服器的目錄,該目錄是相對於系統配置中配置了該伺服器的 Remote directory 開始查詢。

  4. 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 協議》,轉載必須註明作者和本文連結

相關文章