jenkins之代码部署回滚脚本
#!/bin/bash
DATE=`date +%Y-%m-%d_%H-%M-%S`
METHOD=$1
BRANCH=$2
GROUP_LIST=$3 function IP_list(){
if [[ ${GROUP_LIST} == "online-group1" ]];then
Server_IP="192.168.7.105"
echo ${Server_IP}
elif [[ ${GROUP_LIST} == "online-group2" ]];then
Server_IP="192.168.7.106"
echo ${Server_IP}
ssh root@192.168.7.103 ""echo enable server myapp/192.168.7.105" | socat stdio /run/haproxy/admin.sock"
ssh root@192.168.7.104 ""echo enable server myapp/192.168.7.105" | socat stdio /run/haproxy/admin.sock"
elif [[ ${GROUP_LIST} == "online-all" ]];then
Server_IP="192.168.7.105 192.168.7.106"
echo ${Server_IP}
fi
} function clone_code(){
rm -rf /data/git/linux37/web1
cd /data/git/linux37
git clone -b ${BRANCH} git@192.168.7.101:linux37/web1.git
} function scanner_code(){
cd /data/git/linux37/web1 && /usr/local/sonar-scanner/bin/sonar-scanner
} function make_zip(){
cd /data/git/linux37/web1 && zip -r code.zip ./*
} down_node(){
for node in ${Server_IP};do
ssh root@192.168.7.103 "echo "disable server myapp/${node}" | socat stdio /run/haproxy/admin.sock"
echo "${node} 在负载均衡192.168.7.103下线成功"
ssh root@192.168.7.104 "echo "disable server myapp/${node}" | socat stdio /run/haproxy/admin.sock"
echo "${node} 在负载均衡192.168.7.104下线成功"
done
} function stop_tomcat(){
for node in ${Server_IP};do
ssh tomcat@${node} "/etc/init.d/tomcat stop"
done
} function start_tomcat(){
for node in ${Server_IP};do
ssh tomcat@${node} "/etc/init.d/tomcat start"
#sleep 5
done
} function scp_zipfile(){
for node in ${Server_IP};do
scp /data/git/linux37/web1/code.zip tomcat@${node}:/data/tomcat/tomcat_appdir/code-${DATE}.zip
ssh tomcat@${node} "unzip /data/tomcat/tomcat_appdir/code-${DATE}.zip -d /data/tomcat/tomcat_webdir/code-${DATE} && rm -rf /data/tomcat/tomcat_webapps/myapp && ln -sv /data/tomcat/tomcat_webdir/code-${DATE} /data/tomcat/tomcat_webapps/myapp"
done
} function web_test(){
#sleep 20
for node in ${Server_IP};do
NUM=`curl -s -I -m 10 -o /dev/null -w %{http_code} http://${node}:8080/myapp/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 [[ ${GROUP_LIST} == "online-all" ]];then
ssh root@192.168.7.103 ""echo enable server myapp/192.168.7.105" | socat stdio /run/haproxy/admin.sock"
ssh root@192.168.7.104 ""echo enable server myapp/192.168.7.105" | socat stdio /run/haproxy/admin.sock"
fi
##########################################
if [ ${node} == "192.168.7.105" ];then
echo "192.168.7.105 部署完毕,请进行代码测试!"
else
ssh root@192.168.7.103 ""echo enable server myapp/${node}" | socat stdio /run/haproxy/admin.sock"
ssh root@192.168.7.104 ""echo enable server myapp/${node}" | socat stdio /run/haproxy/admin.sock"
fi
} function rollback_last_version(){
for node in ${Server_IP};do
NOW_VERSION=`ssh tomcat@${node} ""/bin/ls -l -rt /data/tomcat/tomcat_webapps/ | awk -F"->" '{print $2}' | tail -n1""`
NOW_VERSION=`basename ${NOW_VERSION}`
echo $NOW_VERSIONG
NAME=`ssh tomcat@${node} ""ls -l -rt /data/tomcat/tomcat_webdir/ | grep -B 1 ${NOW_VERSION}| head -n 1| awk '{print $9}'""`
ssh tomcat@${node} "rm -rf /data/tomcat/tomcat_webapps/myapp && ln -sv /data/tomcat/tomcat_webdir/${NAME} /data/tomcat/tomcat_webapps/myapp"
echo "${node} 回滚至${NAME}成功"
done
} main(){
case $1 in
deploy)
IP_list;
clone_code;
scanner_code;
make_zip;
down_node;
stop_tomcat;
scp_zipfile;
start_tomcat;
web_test;
;;
rollback_last_version)
IP_list;
echo ${Server_IP}
down_node;
stop_tomcat;
rollback_last_version;
start_tomcat;
web_test;
;;
esac
} main $1 $2 $3
jenkins之代码部署回滚脚本的更多相关文章
- 【linux】【jenkins】jenkins构建、mvn或者npm打包、docker运行、失败自动回滚脚本
小白对jenkins运维的使用有点简单的想法,这里开个记录贴记录下. 由于未找到jenkins构建失败后执行其他脚本的插件,也暂时没有使用其他运维工具.所以想自己写一个shell脚本,一是方便其他人使 ...
- git 删除本地分支和远程分支、本地代码回滚和远程代码库回滚
[git 删除本地分支] git branch -D br [git 删除远程分支] git push origin :br (origin 后面有空格) git代码库回滚: 指的是将代码库某分支退 ...
- 【GIT】git 删除本地分支和远程分支、本地代码回滚和远程代码库回滚
[git 删除本地分支] git branch -D br [git 删除远程分支] git push origin :br (origin 后面有空格) git代码库回滚: 指的是将代码库某分支退 ...
- 【转】git 删除本地分支和远程分支、本地代码回滚和远程代码库回滚
转载自:http://m.blog.csdn.net/blog/lihongli528628/45483463 [git 删除本地分支] git branch -D br [git 删除远程分支] g ...
- SVN代码的回滚二
SVN代码的回滚: 不丢失新建的文件,获得最新的SVN版本控制.TortoiseSVN-ShowLog-选中你要回滚的版本-右键-Export,之后将修改的文件覆盖到你的最新版本,commit即可. ...
- git远程库代码版本回滚方法
最近使用git时, 造成了远程库代码需要回滚到之前版本的情况,为了解决这个问题查看了很多资料. 问题产生原因: 提交了错误的版本到远程库. 以下是解决的方法, 供大家参考: 1.对本地代码库进行回滚 ...
- git远程代码库回滚(webstorm下)
git远程代码库回滚(webstorm下) 1. 场景 添加了一个文件[file-for-test.js]到git的控制下 进行了三次修改,并分别进行了三次commit,最后进行了一次push git ...
- 解析binlog生成MySQL回滚脚本
如果数据库误操作想恢复数据.可以试试下面这个脚本.前提是执行DML操作. #!/bin/env python #coding:utf-8 #Author: Hogan #Descript : 解析bi ...
- seata代码控制回滚和临时挂起分布式事物
seata代码控制回滚和临时挂起分布式事物 一.说明 二.功能实现 1.手动回滚分布式事物 2.临时挂起分布式事物 三.完整代码 四 参考链接 一.说明 此处只是简单的记录一下,使用了 Seata后, ...
随机推荐
- 虚拟机克隆后修改mac地址和ip地址
(1)虚拟机克隆在新的虚拟机下会有文件产生变化. /etc/udev/rules.d/70-persistent-net.rules 文件中会多一个eth1 网卡的文件 ,eth0 的那行文件是原虚 ...
- Android现有工程使用Compose
Android现有工程使用Compose 看了Compose的示例工程后,我们也想使用Compose.基于目前情况,在现有工程基础上添加Compose功能. 引入Compose 首先我们安装 Andr ...
- 【数据结构&算法】04-线性表
目录 前言 线性表的定义 线性表的数据类型&操作 线性表操作 数据类型定义 复杂操作 线性表的顺序存储结构 顺序存储结构的定义 顺序存储方式 数据长度和线性表长度的区别 地址的计算方法 顺序存 ...
- HashSet的remove方法(一道面试题)
1 public class CollectionTest { 2 3 @Test 4 public void test3(){ 5 HashSet set = new HashSet(); 6 Pe ...
- ONVIF客户端中预置位设置代码实现过程
simpleOnvif的功能:提供支持Windows.Linux.arm.Android.iOS等各种平台的SDK库,方便集成,二次开发 之前跟大家分享了我们安徽思蔷信息科技的simpleOnvif的 ...
- springboot利用mock进行junit单元测试,测试controller
1 spring-boot-starter-test内置mockito,添加pom依赖 <dependency> <groupId>org.springframework.b ...
- 在同级路径下,SpringBoot两种类型的配置文件(.properties/.yml)同时存在时,配置优先级如何处理?
两类配置文件如果同时存在,若 key 相同则 properties 优先级高,若key不同则合并加载:
- 3组-Alpha冲刺-2/6
一.基本情况 队名:发际线和我作队 组长博客:链接 小组人数:10 二.冲刺概况汇报 黄新成(组长) 过去两天完成了哪些任务 文字描述 在校内外进行了数据采集,采集了多场景的数据,并进行了帧分割. 展 ...
- 最大连续子数组和--dp
最大连续子数组和 问题: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的子段和的最大值.当所给的整数均为负数时定义子段 ...
- PAT A1024题解——高精度大数相加模板
PAT:A1024 Palindromic Number A number that will be the same when it is written forwards or backwards ...