該專案包含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程式"