利用maven(build) 下载最新jar包,supervisor重启服务更新svn版本
1、本脚本实现:第一次初始化新的svn版本时,创建新的脚本
vim creater_build.sh
#!/bin/bash
# Jaua
# Tue Jan 22 2019
#
read -p "Input svn Version Library Website:" url #变量url为svn的版本库网址
pro=`echo ${url##*/}`
cd /data/build/
svn co ${url}
cd /data/bin/
cp -a build_TradeMember.sh build_${pro}.sh
sed -i "s/TradeMember/${pro}/" build_${pro}.sh
sed -i "s/http:\/\/172.16.1.253:3536\/gcard\/TradeMember/${url}/" build_${pro}.sh
bash build_${pro}.sh
本脚本实现:下载最新jar包或zip压缩包,过滤代码版本;然后把jar包或zip压缩包移动到supervisor的指定路径下;再重启服务后读取jar包是否能启动
vim build_TradeMember.sh
#!/bin/bash
# Jaua
# Tue Jan 22 2019
#
DT=`date +%Y%m%d%H%M%S`
project_name=TradeMember
workdir=/data/build/${project_name}
logdir=/data/logs/build
lication_path=/data/sites/${project_name}
bak_file=${project_name}.jar-${DT}
bak_dir=${project_name}-${DT}
backupdir=/data/backups/${project_name}.bak
pro_jar=${project_name}.jar
pro_zip=${project_name}.zip
if [ ! -d "$backupdir" ]; then
mkdir -p "$backupdir"
fi
#cd /data/build/
#svn co http://172.16.1.253:3536/gcard/TradeMember
cd $workdir
svn_ver=`svn up|grep 'revision'| grep -Eo '[0-9]+'`
mvn clean install -Pat_test -B -Dmaven.test.skip=true -DskipTests > ${logdir}/${project_name}.log
build_status=`cat ${logdir}/${project_name}.log | grep "BUILD SUCCESS" | wc -l`
if [ ${build_status} -eq 1 ]; then
echo "${build_file} ==> build from SVN code version ${svn_ver}." >> ${logdir}/build.log
cd ${workdir}/target/
file_jar=`ls |grep .jar`
if [ $? == 0 ];then
mv ${lication_path}/${pro_jar} ${backupdir}/${bak_file}
mv ${workdir}/target/${pro_jar} ${lication_path}
echo -e "\033[1;33m${file_jar}\033[0m"
fi
file_zip=`ls |grep .zip`
if [ $? == 0 ];then
cd /data/sites/
mv ${project_name} ${backupdir}/${bak_dir}
mv ${workdir}/target/${pro_zip} ./
unzip ${pro_zip}
mv ${pro_zip} ${backupdir}/${pro_zip}-${DT}
echo -e "\033[1;33m${file_zip}\033[0m"
fi
supervisorctl restart ${project_name}
else
echo -e "\033[1;31mBuild failed\033[0m"
exit 1
fi
sleep 10
svn_version=`cat ${logdir}/build.log |tail -1`
stat=`supervisorctl status ${project_name}`
timeout=`supervisorctl status ${project_name} | awk -F"[ ]*|:" '{print $8}'`
if [ ${timeout} -ge 10 ];then
echo -e "\033[1;32m${svn_version}\033[0m"
echo "Project ${project_name} status:"
echo -e "\033[1;32m${stat}\033[0m"
else
echo -e "\033[1;31mState request timeout\033[0m"
fi