CICD - Jenkins 代码回滚案例-未实验可参考 【五】





appdir:保存压缩包
webdir:被解压的压缩包
webapps:项目被软连接到 webdir文件夹中的版本
vim /data/script/birkhoff-devops_vm-deloy.sh
#!/bin/bash
DATE=`data +%Y-%m-%d_%H-%M-%S`
METHOD=$1
BRANCH=$2
GROUP_LIST=$3
function IP_list()
if [[ ${GROUP_LIST》 == "GROUP1"]];then
Server_IP="172,31.3.105"
echo ${Server_IP}
ssh root@172.31.3.103 ""echo disable server web_port-188/172.3.13.105" | socat stdio /var/lib/haproxy/haproxy.sock"
ssh root@172.31.3.104 ""echo disable server web_port-188/172.3.13.105" | socat stdio /var/lib/haproxy/haproxy.sock"
elif [[ $(GROUP_LIST) == "GROUP2" ]];then
Server_IP="172.31.3.106 172.31.3.107"
echo ${Server_IP}
ssh root@172.31.3.103 ""echo enable server web_port-188/172.3.13.105" | socat stdio /var/lib/haproxy/haproxy.sock"
ssh root@172.31.3.104 ""echo enable server web_port-188/172.3.13.105" | socat stdio /var/lib/haproxy/haproxy.sock"
elif [[ $(GROUP_LIST) == "GROUP3" ]];then
Server_IP="172.31.3.105 172.31.3.106 172.31.3.107"
echo ${Server_IP}
fi
}
function clone code(){
cd /data/git/magedu/ && rm -rf devops
git clone -b $(BRANCH} git@172.31.3.101:magedu/devops.git
echo "代码clone完成"
}
function scanner_code(){
cd /data/git/magedu/devops && /apps/sonar-scanner/bin/sonar-scanner
echo"代码扫描完成,请打开snarqube查看扫描结果"
}
function code-maven(){
#echo "cd /data/git/magedu/devops && mvn clean package -Dmaven.test.skip=true"
echo"代码编译完成"
}
function make_zip(){
cd /data/git/magedu/devops && zip -r devops.war ./ -x "\.*" -x "Jenkinsfile" -x "sonar-project.properties"
echo"代码打包充成"
}
down_node(){
for node in ${Server_IP};do
ssh root@172.31.3.103 ""echo disable server web_port-188/${node}" | socat stdio /var/lib/haproxy/haproxy.sock"
echo "${node}从负载均衡172.31.3.103下线成功"
ssh root@172.31.3.104 ""echo disable server web_port-188/${node}" | socat stdio /var/lib/haproxy/haproxy.sock"
echo "${node}从负载均衡172.31.3.104下线成功"
done
}
function scp_zipfile(){
for node in ${Server IP};do
scp /data/git/magedu/devops/devops.war magedu@${node}:/data/tomcat/tomcat_appdir/devops-${DATE}.war
ssh magedu@${node} "unzip -q /data/tomcat/tomcat_appdir/devops-${DATE}.war -d /data/tomcat/tomcat_webdir/devop-${DATE} && rm -rf /data/tomcat/tomcat_webapps/devops && ln -sv /data/tomcat/tomcat_webdir/devops-${DATE} /data/tomcat/tomcat_webapps/devops"
done
}
function stop_tomcat(){
for node in ${Server_IP};do
ssh magedu@${node} "/etc/init.d/tomcat stop"
done
}
function start_tomcat
for node in $(Server_IP};do
ssh magedu@${node} "/etc/init.d/tomcat start"
#sleep 5
done
function web_test(){
sleep 5
for node in $(Server_IP};do
NUM=`curl -s -I -m 10 -o /dev/null -w %(http_code) http://$(node):8080/devops/index.html`
if [[ $(NUM) -eq 200 ]];then
echo "${node} 测试通过,即将添加到负载"
add_node $(node}
else
echo "${node} 测试失败,请检查该服务器是否成功启动tomcat"
fi
done
}
function add node(){(
node=$1
echo $(node},"-------->"
if [ ${node} == "172.31.3.105" ];then
echo "172.31.3.105 部署完毕,请进行代码测试!"
else
ssh root@172.31.3.103 ""echo enable server web_port-188/${node}" | socat stdio /var/lib/haproxy/haproxy.sock"
ssh root@172.31.3.104 ""echo enable server web_port-188/${node}" | socat stdio /var/lib/haproxy/haproxy.sock"
fi
}
function rollback_last_version(){
for node in ${Server_IP};do
echo $node
NOW_VERSION=`ssh magedu@${node} ""/bin/ls -l -rt /data/tomcat/tomcat_webapps/ | awk -F"->" '{print $2}' | tail -n1""`
NOW_VERSION=`basename $(NOW_VERSION)`
echo "${node}的当前版本是------->",$NOW_VERSION
NAME=`ssh magedu@${node} ""ls -l -rt /data/tomat/tomcat_webdir/ | grep -B 1 ${NOW_VERSION} | head -n1 | awk '{print $9}'""`
ssh magedu@${node} "rm -rf /data/tomcat/tomcat_webapps/devops && ln -sv /data/tomcat/tomcat_webdir/${NAME} /data/tomcat/tomcat_webapps/devops"
done
}
function delete_history_version(){
for node in $(Server_IP);do
ssh magedu@${node} "rm -rf /data/tomcat/tomcat appdir/*"
NUM=`ssh magedu@${node} ""/bin/ls -l -d -rt /data/tomcat/tomcat_webdir/devops-* | wc -l""`
echo "${node}的历史版本是$NUM个"
if [ ${NUM} -gt 5 ];then
echo "即将在${node}删除历史版本"
NAME=`ssh magedu@{node} ""/bin/ls -l -d -rt /data/tomcat/tomcat_webdir/devops-* | head -n1 | awk '{print $9}'""
ssh magedu@${node} "rm -rf ${NAME}"
echo "${node}删除历史版本${NAME}成功!"
done
}
main(){
case $1 in
deploy)
IP_list;
clone_code;
scanner_code:
code_maven;
make_zip;
down_node;
stop_tomcat;
scp_zipfile;
start_tomcat;
web_test;
delete_history_version;
;;
rollback_last_version)
IP_list;
down_node;
stop_tomcat;
rollback_last_version;
start_tomcat;
Haproxy配置灰度发布 策略转发

浙公网安备 33010602011771号