jenkins設定自動部署springboot程式

2020-08-14 11:06:36

 

任務背景

該專案包含4個程式包:a.jar,b.jar,c.jar,d.jar,每次啓動前需要修改程式中的組態檔(修改數據源設定),然後按照先後順序啓動。

任務目標

1.利用jenkins拉取程式碼,且在打包前就修改好組態檔

2.打好包後,將4個程式包傳輸至測試伺服器,並遠端執行事先寫好的啓動指令碼

設定步驟

1.先新建一個Maven任務,設定好原始碼地址以及build設定

2.完成上述設定後,構建一次,看看工作空間的內容

這裏顯示的就是這個工程的程式碼結構,即從git拉取程式碼後在jenkins工作空間的展示情況

3.修改組態檔

這次需要修改2個組態檔,一個是appr-law-items-service.jar中的application.yml,一個是appr-law-regulation-service中的application.yml

 

修改組態檔,利用的sed命令

可以在Pre Steps中新增「執行shell」

复制代码

rm -f ${WORKSPACE}/apr-aw-api-gateway/target/*.jar 
rm -f ${WORKSPACE}/appr-law-items-service/target/*.jar 
rm -f ${WORKSPACE}/appr-law-registry-eureka/target/*.jar 
rm -f ${WORKSPACE}/appr-law-regulation-service/target/*.jar 
sed -r -i 's#192.xxx:3306/law_item#192.1xxx:3306/law_item#g' ${WORKSPACE}/appr-law-items-service/src/main/resources/application.yml 
sed -r -i 's#password: 123#password: 123456#g' ${WORKSPACE}/appr-law-items-service/src/main/resources/application.yml 
sed -r -i 's#192.xxx:3306/law_item#192.xxx:3306/law_item#g' ${WORKSPACE}/appr-law-regulation-service/src/main/resources/application.yml 
sed -r -i 's#password: 123#password: 123456#g' ${WORKSPACE}/appr-law-regulation-service/src/main/resources/application.yml

复制代码

這裏的關鍵在於,如何找到application.yml檔案的位置(注意是打包前這個檔案的路徑)

開始我找的是 「appr-law-items-service / target / classes /"下的application.yml

 

後來發現不對,改這個檔案沒有效果(這個是打包後的檔案了)

後來又找到 appr-law-items-service / src / main / resources /的application.yml

這個是原始碼中的組態檔,修改這個檔案就會生效

改動位置如下

經過上述設定就達到了打包前修改組態檔了目的(也可以下載打包好的jar檔案,解壓看看組態檔是否修改成功)

 

4.利用send build artifacts over ssh 外掛設定遠端部署

jenkins安裝在154伺服器,現在需要把打好的程式包傳輸到133伺服器,並在133伺服器進行遠端部署

 

在構建後操作中新增send build artifacts over ssh 外掛

Transfer Set Source files:需要上傳的檔案(相對於工作區的路徑。看後面的設定可以填寫多個,預設用,分隔)(直接到工作空間中找到這個檔案,拷貝目錄即可)

Remote directory:遠端目錄

Exec command:把你要執行的命令寫在裏面(這裏我寫的是切換到ZFSXK目錄,然後執行事先寫好的啓動檔案)

高階:

Flatten files:只上傳檔案,不建立目錄(除了遠端目錄)

 

 

最終構建完成後,開啓133伺服器,切換到ZFSXK目錄,檢視,如下

顯示傳輸過來的4個jar包,且執行了start.sh檔案

start.sh是事先寫好的啓動檔案,寫完賦予執行許可權執行即可

 

#! /bin/sh

jps -l | grep a.jar | awk  '{print $1}'  | xargs kill -9
jps -l | grep b.jar | awk  '{print $1}'  | xargs kill -9
jps -l | grep c.jar | awk  '{print $1}'  | xargs kill -9
jps -l | grep d.jar | awk  '{print $1}'  | xargs kill -9

cd /u01/ZFSXK
nohup /u01/jdk1.8.0_11/bin/java -jar a.jar >euceka.log 2>&1 &
echo "啓動a程式"

nohup /u01/jdk1.8.0_11/bin/java -jar b.jar >gateway.log 2>&1 &
echo "啓動b程式"

nohup /u01/jdk1.8.0_11/bin/java -jar c.jar >items-service.log 2>&1 &
echo "啓動c程式"

nohup /u01/jdk1.8.0_11/bin/java -jar d.jar >regulation-service.log 2>&1 &
echo "啓動d程式"