目前項目:jenkins部署后,會將所有的git上的項目打包到本地,然后會手動去執行linux語句去復制jar包到測試項目路徑下面,然后再啟動jar
想要實現狀態:jenkins部署后,執行shell腳本,自動實現查看當前測試項目路徑下jar的運行狀態,若在運行則kill當前進行,再進行復制jar,再啟動jar
步驟一 在windows環境下打開一個load.sh的文件。在里面編寫以下內容
#!/bin/bash
#jenkins-maven-job,構建完成會在自動關閉進程及其子進程,造成nohub java -jar your.jar & 無效解決辦法加上BUILD_ID=DONTKILLME
BUILD_ID=DONTKILLME
#部署jar包名稱
pas_origin_package=xquant-application-manager-app-1.0.0.0-SNAPSHOT.jar
#jenkins部署該項目的地址
pas_project_path=/home/admin/jenkins/workspace/Xquant-Application-Manager
#jenkins拉取發布路徑下的jar
pas_deploy_path_jar=$pas_project_path/xquant-application-manager-app/target/$pas_origin_package
#部署該項目的測試路徑下和jar
pas_test_path=$pas_project_path/Pro_back
pas_test_path_jar=$pas_test_path/$pas_origin_package
#殺死當前正在運行的程序1
PID=$(ps -ef | grep $pas_origin_package | grep -v grep | awk '{print $2}')
echo "ps -p $PID"
if [ "$PID" != "" ]
then
echo "結束進程$PID"
kill -9 $PID
else
echo "沒有進程在運行"
fi
#刪除資源包
rm -rf $pas_origin_package;
#移動要安裝的程序(此處最后有一個. 表示當前路徑)
cp $pas_deploy_path_jar .
#執行程序(這個start.sh文件是開發提供的啟動文件,主要內容是啟動jar包和配置文件部分)
sh start.sh
#判斷線程是否啟動
newPid=$(pgrep -f $pas_origin_package)
echo "線程正常啟動pid:$newPid"
步驟二 復制全部內容,在lunix下面手動執行一下
可以正常執行
步驟三 使用指令去執行一下
cd 項目路徑
sh load.sh
需要可以執行成功,但是在執行過程中出現:bash: $'\r': command not found的問題
原因:從windows下面上傳到unix編譯的問題,需要重新轉化一下
方法:
# 使用vim打開文件 vim load.sh
# 轉換格式 :set ff=unix
# 保存文件 :wq
步驟四 通過jenkins去綁定項目
1、一種是直接放在構建項目后面,新建一個shell腳本,執行以上內容。但是這種會有一個問題,就是在現實操作中,不需要去下載源碼。只需要去重啟接口
2、若只需要執行重啟操作時,去SSH中執行即可
遇到問題:權限問題
當前jenkins是使用jenkins賬號的。但是SSH時使用root賬號去操作,故若由於某些原因手動起來的jar,后使用jenkins構建時,會出現沒有權限殺死這個
問題解決:
在部署前手動去kill當前線程
還有一種方式是,將jenkins的賬號權限修改為root權限,目前未采用該方式
方法:
# vim /etc/sysconfig/jenkins
# i
# 修改為JENKINS_USER = "root"
# :wq
按照配置說明需要將$JENKINS_HOME和var/log/jenkins的權限同時進行修改
chown -R jenkins:jenkins /var/lib/jenkins
chown -R jenkins:jenkins /var/cache/jenkins
chown -R jenkins:jenkins /var/log/jenkins

