DevOps之四--Publish over SSH遠(yuǎn)程部署

導(dǎo)航

一、插件安裝

  • 首頁(yè) > 系統(tǒng)管理 > 插件管理
    搜索Publish over SSH,直接安裝。下圖是我已經(jīng)安裝過的


    image.png

二、配置Publish over SSH

1. 首頁(yè) > 系統(tǒng)管理 > 系統(tǒng)配置

  • 步驟一安裝插件完成之后,會(huì)在這里生產(chǎn)一個(gè)Publish over SSH的配置項(xiàng)。


    image.png

2. 配置詳解

  • 配置詳解.png
  • Passphrase:SSH的密碼
    使用用戶名、密碼SSH登錄時(shí),這里輸入用戶名密碼。
    使用私鑰登錄時(shí),這里是私鑰的密碼。

  • Path to key:私鑰文件的路徑

  • Key:私鑰

  • Name:服務(wù)器名稱(后續(xù) 步驟四 中會(huì)用到)

  • Hostname:服務(wù)器 IP

  • Username:登錄服務(wù)器用戶名

  • Remote Directory:登錄服務(wù)器后的根目錄,后面 Jenkins默認(rèn)發(fā)送 Jar 到此目錄下。

  • 注意:賬號(hào)密碼登錄和 私鑰登錄二選一即可

三、生成啟動(dòng)、停止Jar的 shell 腳本

1. 停用老版本stop.sh

#!/bin/bash
echo "=================stop SpringBoot DeviceLink================"
pid=`ps -ef | grep  devicelink-2.1.jar | grep -v grep | awk '{print $2}'`
echo “舊應(yīng)用進(jìn)程id:$pid”
if [ -n "$pid" ]
then
kill -9 $pid
fi

2. 啟動(dòng)新版本 run.sh

#!/bin/bash
export JAVA_HOME=/usr/java/jdk1.8.0_191-amd64
jarName=devicelink-2.1.jar
chmod 777 ${jarName}
nohup ${JAVA_HOME}/bin/java -Xms1024M -Xmx1024M   -jar ${jarName}  > nohup.out &
  • 注意:stop.sh 和 run.sh 的存放路徑,步驟四 要用到此路徑

四、配置構(gòu)建任務(wù)觸發(fā)遠(yuǎn)程部署

1. 首頁(yè) > 構(gòu)建任務(wù)名稱 > 配置 > Post Steps

可根據(jù)實(shí)際需求選擇。

  • Run only if build succeeds:僅在構(gòu)建成功時(shí)運(yùn)行

  • Run only if build succeeds or is unstable:僅在構(gòu)建成功或不穩(wěn)定時(shí)運(yùn)行

  • Run regardless of build result:無(wú)論構(gòu)建結(jié)果如何運(yùn)行

2. 遠(yuǎn)程部署配置詳解

  • 點(diǎn)擊 Add post-build step > Send files or execute commands over SSH

    遠(yuǎn)程部署詳解.png

  • Name:選擇 步驟二 的服務(wù)器名

  • Source files:要部署的源文件。這里的路徑相對(duì)于 Jenkins的工作路徑
    例如:
    構(gòu)建生成的JARJenkins_home/workspace/JenkinsBuild/devicelink/target/devicelink-2.1.jar
    這里需要輸入devicelink/target/devicelink-2.1.jar 或使用通配符** /devicelink-2.1.jar
    Jenkins工作目錄是Jenkins_home/workspace/JenkinsBuild/

  • Remove prefix:移除指定前綴。
    例如:
    配置移除devicelink/target,JAR文件會(huì)發(fā)送到 /home/run/devlk/(步驟二的RemoteDirectory + RemoteDirectory)下,否則會(huì)發(fā)送到 /home/run/devlk/devicelink/target/ 下(不存在的路徑會(huì)自動(dòng)創(chuàng)建)。

  • RemoteDirectory: JAR部署目錄。
    注意! 此目錄是基于之前設(shè)置服務(wù)器時(shí)設(shè)置遠(yuǎn)程目錄的,即這里的目錄是位于服務(wù)器設(shè)置目錄下的相對(duì)目錄。最終部署目錄 /home/run/devlk/ (步驟二的RemoteDirectory + 當(dāng)前RemoteDirectory)

  • Exec command:輸入要執(zhí)行的linux 命令
    例如:

source /etc/profile
cd /home/run/devlk/
chmod 775 *.sh
BUILD_ID=devicelink
./stop.sh
./run.sh

echo "=============部署完成============="

3.【踩坑】部署目錄

問題:JAR包發(fā)送到服務(wù)器的位置不對(duì)
解決方案:調(diào)整 步驟二 和 步驟四 的 RemoteDirectory,最終的目錄是連個(gè) RemoteDirectory 拼接起來的。

4. 【踩坑】shell 腳本不執(zhí)行

問題:JAR 發(fā)送到服務(wù)器后,沒有執(zhí)行 Exec Command內(nèi)的 linux 指令或 shell 腳本
解決方案:
1、在Exec command 區(qū)添加source /etc/profile,加上它是可以讓.sh腳本執(zhí)行。
2、在execute shell輸入框中加入BUILD_ID=DONTKILLME,可防止jenkins殺死啟動(dòng)的進(jìn)程。
3、給.sh 文件授執(zhí)行權(quán)限 chmod 775 *.sh
4、注意.sh 腳本存放位置

-------------------------至此遠(yuǎn)程部署結(jié)束------------------------

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容