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配置灰度发布 策略转发

 

posted @ 2023-07-03 10:13  しみずよしだ  阅读(45)  评论(0)    收藏  举报