jenkins自动发布后端项目

 1.jenkins配置的构建服务脚本

if [ "$environment" == test ]; then  #判断jenkins参数所选择的环境
   #发布新版本到112服务器
   ssh root@10.1.60.80 sh /etc/jb/1.sh    #将112服务器的流量切掉
   if [ $? == 0 ]; then           #判断是否切成功
      sleep 10                   #等待10s,等112服务器上的老进程跑完
      ssh root@10.1.60.112 sh /etc/jar/del.sh   #将112服务器上的旧jar包备份,并将服务关闭
      scp /root/.jenkins/workspace/sy/target/*.jar root@10.1.60.112:/etc/jar/ #将新的jar包传到112服务器上
      ssh root@10.1.60.112 sh /etc/jar/start.sh  #启动新的jar包服务
      WAIT_TIME=120      #创建一个参数
      a_port_open() {    #将下面的判断语句赋值到a_port_open
            A=`curl -i 10.1.60.112:8083|awk 'NR==1'|awk '{print $2}'`  #取112服务的端口状态
            if [ $A == 200 ]; then  #判断112服务的端口状态是否正常,等于200服务就是正常的
               return 0   #若是正常返回0
            else
               return 1  #不正常返回1
            fi
      }
      a_time=0      #创建一个参数
      while ! a_port_open; do   #while循环并判断a_port_open的值是否为0,若为0则退出循环,不为0则一直循环
         sleep 1  #休眠1s
         a_time=$((a_time+1))  #将a_time变量值加1
         if [ $a_time > $WAIT_TIME ]; then  #判断a_time变量值是否大于WAIT_TIME变量值,相当于判断服务是否超过120秒还未启动
             exit 1  #若超过120秒未启动退出状态为1
         fi
      done
   else
      echo "nginx更改权限失败,请检查nginx配置文件"
      exit 2
   fi
   if [ $? == 0 ]; then #判断上面112服务器是否部署成功
         #发布新版本到114服务器
         ssh root@10.1.60.80 sh /etc/jb/2.sh  #退出状态等于0说明新服务部署成功,将114的流量切到112上
         if [ $? == 0 ]; then   #判断是否切成功
            sleep 10
            ssh root@10.1.60.114 sh /etc/jar/del.sh
            scp /root/.jenkins/workspace/sy/target/*.jar root@10.1.60.114:/etc/jar/
            ssh root@10.1.60.114 sh /etc/jar/start.sh
            b_port_open() {
                 B=`curl -i 10.1.60.114:8083|awk 'NR==1'|awk '{print $2}'`
                 if [ $B == 200 ]; then
                    return 0
                 else
                    return 1
                 fi
            }
            b_time=0
            while ! b_port_open; do
                sleep 1
                b_time=$((b_time+1))
                if [ $b_time > $WAIT_TIME ]; then
                   exit 1
                fi
            done
            if [ $? == 0 ]; then
               ssh root@10.1.60.80 sh /etc/jb/3.sh  #将流量重新平均分配到112和114服务器上
               if [ $? == 0 ]; then
                  echo "服务发布完成"
               else
                  echo "nginx更改权限失败,请检查nginx配置是否正确"
                  exit 2
               fi
            else
               echo "服务有问题,请检查服务"
               exit 2
            fi   
         else
            echo "nginx更改权限失败,请检查nginx配置是否正确"
            exit 2
         fi
   else
      echo "112服务未部署成功"
      exit 2
   fi

else      #判断jenkins参数所选择的环境的else
       #测试环境就按上面得写就行,改一下ip地址
fi

2.112和114应用服务器上的脚本(通过远程执行的脚本所有路径必须写完整路径)

del.sh

#!/bin/bash
A=`netstat -tlpn |grep :8083|wc -l`
B=`netstat -tlpn |grep :8083|awk '{print $7}'|awk -F '/' '{print $1}'`  #取服务的进程pid
if [ $A == 0 ]; then  #判断服务是否存活
  rm -rf *.bak       #删除以前备份的jar包
  mv $(ls /etc/jar/*.jar) $(ls /etc/jar/*.jar)".bak"    #将旧的jar包备份
else
  kill -9 $B    #通过pid将服务关闭
  rm -rf *.bak   #删除以前备份的jar包
  mv $(ls /etc/jar/*.jar) $(ls /etc/jar/*.jar)".bak"  #将旧的jar包备份
fi

start.sh

#!/bin/bash
nohup /etc/java/jdk1.8.0_121/bin/java -jar /etc/jar/*.jar &>/etc/jar/java.log&  #前面的&表示且,后面的&表示后台执行

给两个脚本添加执行权限

chmod  +x /etc/jar/del.sh

chmod +x /etc/jar/start.sh

3.配置80服务器切流量脚本

1.sh

#!/bin/bash
sed -i '/10.1.60.112:8083/s/^/#/g' /etc/nginx/conf.d/test.conf  #112应用服务器的流量切掉,即在配置项前面加#注释掉
nginx -s reload     #优雅的重载nginx配置文件
if [ $? == 0 ]; then   #判断是否正常重启
   exit 0   #退出状态为0,给jenkins的脚本去判断nginx是否成功执行
else
   exit 2   #退出状态为2,给jenkins的脚本去判断nginx是否成功执行
fi

2.sh

#!/bin/bash
sed -i '/10.1.60.112:8083/s/.//' /etc/nginx/conf.d/test.conf   #将流量重新分配回112应用服务器,即将配置项前的#去掉
sed -i '/10.1.60.114:8083/s/^/#/g' /etc/nginx/conf.d/test.conf  #将114应用服务器的流量切掉,即在配置项前面加#注释掉
nginx -s reload
if [ $? == 0 ]; then
   exit 0
else
   exit 2
fi

3.sh

#!/bin/bash
sed -i '/10.1.60.114:8083/s/.//' /etc/nginx/conf.d/test.conf  #将流量重新分配到114服务器上
nginx -s reload
if [ $? == 0 ]; then
   exit 0
else
   exit 2
fi

给三个脚本添加执行权限

chmod  +x /etc/jb/1.sh

chmod  +x /etc/jb/2.sh

chmod  +x /etc/jb/3.sh

nginx切流量这一块也可以通过切换多个不同的配置文件去切流量

nginx项目配置文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值