1. 程式人生 > 實用技巧 >Jenkins檢查自定義更新任意多個jar shell

Jenkins檢查自定義更新任意多個jar shell

背景

要打包的git分支要用到6個左右的專案jar包,但是每次更新的jar包可能是多個、可能是全部也可能是一個。全部更新太耗時、一個一個更新也要來回修改配置或者重複打包。

解決方法

利用迴圈更新、把要更新的找到規律,提取變數。然後根據這次要更新的專案寫到ups.txt中,可一個或者多個,進行測試就可以根據檔案的更新專案來更新環境的jar包啦!

操作步驟

建立任務構建一個自由風格的軟體專案--輸入對應的git地址和分支及對應的密碼,並把以下shell內容根據實際環境除錯後放在--構建---執行shell中--儲存執行即可。

#執行打包操作
JAVA_HOME=/usr/local/openjdk-8
JAVA_HOME=/usr/local/maven/jdk
PATH=$JAVA_HOME/bin:/usr/local/maven/bin:$PATH
mvn clean install -Dmaven.test.skip=true
#mvn package -f pom.xml -s /usr/local/maven/conf/settings-27.xml clean install


#進行模擬開發提交更新專案檔案
echo "
store
hbs
" >ups.txt


#!/bin/bash
for JAR_XM in `cat ups.txt`
do
#更新 dpp-mndata
SIP=10.0.43.36
#SIP=123.56.45.200

DOCKER_NAME=data-center
JAR_NAME=${JAR_XM}-2.0.jar
JAR_U=/app/data-center/${JAR_XM}
JAR_PATH=${JAR_U}/${JAR_NAME}


cd /var/jenkins_home/workspace/data-center2/${JAR_XM}/target 

echo "
ps -ef |grep ${JAR_NAME} |awk '{print \$2}' | xargs kill -9 
cd ${JAR_U}
nohup java -jar  ${JAR_NAME}   -Dspring.config.location=classpath:application.properties> /dev/null 2>&1 &
" >restart_${JAR_XM}.sh
scp -r restart_${JAR_XM}.sh   ${SIP}:/app/data-center/${JAR_XM}

ssh ${SIP}  "rm -rf /opt/${JAR_NAME}_bak  && \
mv -f ${JAR_PATH} /opt/${JAR_NAME}_bak >/dev/null 2>&1 | true "

scp -r ${JAR_NAME}  ${SIP}:/app/data-center/${JAR_XM}
ssh ${SIP}  "bash ${JAR_U}/restart_${JAR_XM}.sh "

if [ $? -eq 0 ]
then
echo "$UNAME , 更新成功!"
else
echo "$UNAME , 更新失敗!"
fi
done


環境截圖



注意

其中通過shh協議是提前在Jenkins主機做好了免密登入