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
环境截图