1. 程式人生 > 實用技巧 >jenkins-自動化部署java包至遠端伺服器

jenkins-自動化部署java包至遠端伺服器

一、安裝jenkins

參考教程:https://www.cnblogs.com/yanjieli/p/10606674.html

假設jenkins安裝路徑:/usr/local/jenkins

後續新建item都會在這個路徑的workspace目錄下:/usr/local/jenkins/workspace/專案名稱

二、安裝外掛並配置SSH

系統管理 -> 外掛管理 -> 可選外掛,搜尋Publish Over SSH 進行下載

安裝完成後,進入系統管理 ->系統配置(上圖第一個),滑鼠滑到下面,找到如下頁面,配置ssh伺服器:輸入伺服器名稱、IP、使用者名稱、密碼、釋出專案得預設路徑

點選【高階】,勾選 ‘User password’,並且輸入遠端伺服器密碼,點選 ‘Test Configuration’,成功。

三、全域性工具配置

1.maven路徑:jenkins上maven的settings.xml檔案所在路徑

2.JDK路徑:jenkins上jdk安裝路徑

3.maven安裝路徑:

4.git如下配置即可

三、新建任務

點選左側選單欄:新建item。專案名稱:test

如下圖所示,如果沒有 ‘構建一個maven專案’,需要下載外掛(系統管理 -> 外掛管理 -> 可選外掛,搜尋Maven Integration進行下載)。如果你想copy一個已經存在的任務,在複製那個輸入框輸入你要複製的任務就ok了。

點選【確定】按鈕,進入任務配置頁面。

基本配置:

勾選This project is parameterized,選擇git parameter(需要安裝外掛Git Parameter),輸入變數名:branch ,引數型別:分支或標籤, 預設值:master

原始碼管理:

勾選Git,輸入專案URL,新增Git賬號/密碼(有許可權拉取程式碼的賬號),在Branches to build中填入剛才的變數名,注意要加$

BUILD

如果是多個專案的話,最好指定相應專案的POM檔案路徑:/usr/local/jenkins/workspace/test/java/estate-service/pom.xml

這裡根據專案路徑,輸入相對路徑即可。

打包命令:clean package -Dhttps.protocols=TLSv1.2 -Dmaven.test.skip=true

包檔案傳送到遠端

方法一:在post-steps中over ssh,如下圖

方法二:新增構建後操作,如下圖

選擇SSH Server:Name下拉選單選擇上面新增得SSH伺服器

Transfer設定:

Source files:java/estate-service/target/*.jar

目標檔案:即需要從jenkins傳輸得jar包,打包成功後,會在該路徑(/usr/local/jenkins/workspace/test/java/estate-service)下生成target資料夾,裡面的jar包就是我們需要的。
Remove prefix:java/estate-service/target/ 需要去掉的字首,也就是過濾掉不要的資料夾,我只要jar,所以把它的上級全部都去掉了。
Remote directory:遠端伺服器的釋出路徑,即jar包要發到哪個路徑去,注意:實際路徑是在系統配置中 SSH Server中配置的 remote dictionary + 這裡配置的,我就發到當前路徑,所以這裡我就輸入./
Exec command:檔案發到指定伺服器後,要執行的 shell 指令碼,可以直接寫在下面,也可以 sh /aa.sh 這樣呼叫。注意,所有的路徑都要是絕對路徑,不然會找不到執行檔案

#!/bin/sh
ps -ef|grep -v 'grep' |egrep "estate-service.jar"|awk '{system("kill -9 "$2)}'

echo -------------------------------------------
echo start server
echo -------------------------------------------

# jar的部署地址
export CODE_HOME="/acow/springboot"

#所有專案日誌統一在此根目錄, 子目錄會根據logback.xml生成
export LOG_PATH="/acow/logs"

# 【需要按環境調整】apollo配置環境,開發、測試、生產是不同的。
export ENV=DEV
export APP_ID=estate-service

#【按實際調整】authfunc-service服務的埠
export Server_Port=9900

# JVM啟動引數
export JAVA_OPTS="-server -Xms64m -Xmx128m"
# -Dserver.port=$Server_Port  -Dapollo.cacheDir=$apollo_cache -Dapollo.meta=$apollo_meta -Dspring.cloud.nacos.discovery.namespace=$nacos_discovery_namespace -Dspring.cloud.nacos.discovery.group=$nacos_discovery_group -Dspring.cloud.nacos.discovery.server-addr=$nacos_discovery_server
export JVM_OPTS="-Dlog.path=$LOG_PATH -Denv=$ENV -Dapp.id=$APP_ID"

nohup java $JAVA_OPTS $JVM_OPTS -jar $CODE_HOME/$APP_ID.jar >$LOG_PATH/$APP_ID/project.log  2>&1 &

echo ----- started ---

儲存、構建
至此,配置就完成了,我們點選儲存,然後返回專案所在頁面,單擊build with parameter,選擇分支,點選【開始構建】。

點選構建之後,我們可以在左下角 ‘構建佇列’ 中看到本次構建進度,通過控制檯輸出,可以看到構建的詳情。

看到如下日誌輸出,表示釋出成功。可以到遠端伺服器釋出路徑下檢查一下。

另外補充一點:如果配置檔案有改動,怎麼辦?可以在構建前將配置檔案手動修改好,再通過pro_steps將修改後的配置檔案更新到jenkins的原始碼目錄下: