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主机做好了免密登录
posted @ 2020-11-29 17:06  鸣昊  阅读(406)  评论(2编辑  收藏  举报