jenkins,編寫shell腳本自動運行發布的jar


目前項目: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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM