Jenkins基于脚本部署与回滚代码

#!/bin/bash
DATE=`date +%Y-%m-%d_%H-%M-%S`
METHOD=$1
BRANCH=$2
FWQ=$3
echo “部署方法是${METHOD}”
echo “这是分支${BRANCH}”
function HOST_IP(){
if [[ $BRANCH == “main” ]];then
if [[ $FWQ == “FWQ1″ ]];then
HOST_LIST=”10.0.0.11”
# ssh root@10.0.0.19 “”echo enable server m44-tomcat/10.0.0.12″ | socat stdio /run/haproxy/admin.sock”
# ssh root@10.0.0.19 “”echo enable server m44-tomcat/10.0.0.13″ | socat stdio /run/haproxy/admin.sock”
# ssh root@10.0.0.19 “”echo disable server m44-tomcat/10.0.0.11″ | socat stdio /run/haproxy/admin.sock”
elif [[ $FWQ == “FWQ2″ ]];then
HOST_LIST=”10.0.0.12”
# ssh root@10.0.0.19 “”echo enable server m44-tomcat/10.0.0.11″ | socat stdio /run/haproxy/admin.sock”
# ssh root@10.0.0.19 “”echo enable server m44-tomcat/10.0.0.13″ | socat stdio /run/haproxy/admin.sock”
# ssh root@10.0.0.19 “”echo disable server m44-tomcat/10.0.0.12″ | socat stdio /run/haproxy/admin.sock”
elif [[ $FWQ == “FWQ3″ ]];then
HOST_LIST=”10.0.0.13”
# ssh root@10.0.0.19 “”echo enable server m44-tomcat/10.0.0.11″ | socat stdio /run/haproxy/admin.sock”
# ssh root@10.0.0.19 “”echo enable server m44-tomcat/10.0.0.12″ | socat stdio /run/haproxy/admin.sock”
# ssh root@10.0.0.19 “”echo disable server m44-tomcat/10.0.0.13″ | socat stdio /run/haproxy/admin.sock”
elif [[ $FWQ == “FWQall” ]];then
HOST_LIST=”10.0.0.13 10.0.0.12 10.0.0.11″
# ssh root@10.0.0.19 “”echo disable server m44-tomcat/10.0.0.11″ | socat stdio /run/haproxy/admin.sock”
# ssh root@10.0.0.19 “”echo disable server m44-tomcat/10.0.0.12″ | socat stdio /run/haproxy/admin.sock”
# ssh root@10.0.0.19 “”echo disable server m44-tomcat/10.0.0.13″ | socat stdio /run/haproxy/admin.sock”

fi
elif [[ $BRANCH == “develop” ]];then
if [[ $FWQ == “FWQ1″ ]];then
HOST_LIST=”10.0.1.12 10.0.1.13”
fi
fi

}
function Code_clone(){
if [[ $BRANCH == “main” ]];then
cd /data/ && rm -rf app1
git clone git@10.0.0.15:liang/app1.git
elif [[ $BRANCH == “develop” ]];then
cd /data/ && rm -rf app1
git clone -b “revert-6c6f477f” git@10.0.0.15:liang/app1.git
fi

}
function Code_maven(){
cd /data/app1 && mvn clean package -Dmaven.text.skip=true
echo “代码编译完成”
}
function Make_file(){
cd /data/app1
zip -r app1.war ./index.html
echo “代码打包完成”
}
function Code_cp(){
for node in ${HOST_LIST};do
cd /data/app1
scp app1.war lhl@${node}:/data/tomcat/tomcat_appdir/app1-${DATE}.war
done
echo “${node}代码复制完成”
}
function Down_node(){
for node in ${HOST_LIST};do
ssh root@10.0.0.19 “”echo disable server m44-tomcat/${node}” | socat stdio /run/haproxy/admin.sock”
echo “${node}从负载均衡10.0.0.19下线成功”
# ssh root@10.0.0.18 “”echo disable server m44-tomcat/${node}” | socat stdio /run/haproxy/admin.sock”
# echo “${node}从负载均衡10.0.0.18下线成功”
done
}
function Down_tomcat(){
for node in ${HOST_LIST};do
ssh lhl@${node} “/apps/tomcat/bin/catalina.sh stop”
done
echo “${node}服务已停止”
}
function Unzip_file(){
for node in ${HOST_LIST};do
ssh lhl@${node} “unzip /data/tomcat/tomcat_appdir/app1-${DATE}.war -d /data/tomcat/tomcat_webdir/app1-${DATE} && rm -rf /data/tomcat/tomcat_webapps/myapp && ln -sv /data/tomcat/tomcat_webdir/app1-${DATE} /data/tomcat/tomcat_webapps/myapp”
done
}
function Up_tomcat(){
for node in ${HOST_LIST};do
ssh lhl@${node} “/apps/tomcat/bin/catalina.sh start”
done
sleep 5
echo “${node}启动完毕”
}

function Web_test(){
sleep 5
for node in ${HOST_LIST};do
MUM=`curl -s -I -m 10 -o /dev/null -w %{http_code} http://${node}:8080/myapp/index.html`
if [[ ${MUM} -eq 200 ]];then
echo “${node}通过测试,即将添加到负载均衡”
Up_node ${node}
else
echo “${node}测试失败,请检查该服务器是否成功启动tomcat”
fi
done
}

function Up_node(){
for node in ${HOST_LIST};do
ssh root@10.0.0.19 “”echo enable server m44-tomcat/${node}” | socat stdio /run/haproxy/admin.sock”
echo “${node}从负载均衡10.0.0.19上线成功”
# ssh root@10.0.0.18 “”echo disable server m44-tomcat/${node}” | socat stdio /run/haproxy/admin.sock”
# echo “${node}从负载均衡10.0.0.18下线成功”
done

}
function Rm_his_version(){
for node in ${HOST_LIST};do
ssh lhl@${node} “rm -rf /data/tomcat/tomcat_appdir/*”
MUM=`ssh lhl@${node} “”/bin/ls -l -d -rt /data/tomcat/tomcat_webdir/app1-* | wc -l””`
echo “服务器${node} 当前历史版本统计值是:${MUM}”
if [ ${MUM} -gt 5 ];then
NAME=`ssh lhl@${node} “”/bin/ls -l -d -rt /data/tomcat/tomcat_webdir/app1-* | head -n1 | awk ‘{print $9}'””`
ssh lhl${node} “rm -rf ${NAME}”
echo “${node} 删除历史版本${NAME}成功!”
fi
done
}
function Rollback_last_version(){
for node in ${Server_IP};do
echo $node
NOW_VERSION=`ssh lhl@${node} “”/bin/ls -l -rt /data/tomcat/tomcat_webapps/ | awk -F”->” ‘{print $2}’ | tail -n1″”`
NOW_VERSION=`basename ${NOW_VERSION}`
echo $NOW_VERSION,”NOW_VERSION”
NAME=`ssh lhl@${node} “”ls -l -rt /data/tomcat/tomcat_webdir/ | grep -B 1 ${NOW_VERSION} | head -n1 | awk ‘{print $9}'””`
echo $NAME,””NAME
ssh lhl@${node} “rm -rf /data/tomcat/tomcat_webapps/myapp && ln -sv /data/tomcat/tomcat_webdir/${NAME} /data/tomcat/tomcat_webapps/myapp”
done
}
#function Web_test(){
# sleep 5
# for node in ${HOST_LIST};do
# MUM=`curl -s -I -m 10 -o /dev/null -w %{http_code} http://${node}:8080/myapp/index.html`
# if [[ $MUN -eq 200 ]];then
# echo “${node}通过测试,即将添加到负载均衡”
# Up_node ${node}
# elif
# echo “${node}测试失败,请检查该服务器是否成功启动tomcat”
# fi
# done
#}
main(){
case $1 in
deploy)
HOST_IP;
Code_clone;
Make_file;
Code_cp;
Down_node;
Down_tomcat;
Unzip_file;
Up_tomcat;
Up_node;
Web_test;
Rm_his_version;
;;
rollback_last_version)
HOST_IP;
Down_node;
Down_tomcat;
Rollback_last_version;
Up_tomcat;
Up_node;
Web_test;
;;
esac
}
main $1 $2 $3
#echo “这是服务器分支${HOST_LIST}”