任務背景
該項目包含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文件的位置(注意是打包前這個文件的路徑)
后來發現不對,改這個文件沒有效果(這個是打包后的文件了)

這個是源碼中的配置文件,修改這個文件就會生效
改動位置如下

經過上述配置就達到了打包前修改配置文件了目的(也可以下載打包好的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程序"