zoukankan      html  css  js  c++  java
  • 使用gitlab, jenkins搭建CI(持续集成)系统(4) 灰度发布publish

    publish环境是正式环境,和dev, test, prepublish环境不同的是,正式环境一般要更加谨慎一些,发布的时候需要有一个灰度过程,即:分多次部署,每次部署几个服务器节点,验证没有问题以后,再部署几台,直到所有的节点多部署完成。

    jenkins提供的一种choice parameter的构建参数类型,可以使用这种参数类型实现灰度发布的功能。

    添加一个名为DEPLOY的choice parameter, 添加两个选项group01, group02。

    接下来修改构建脚本

    ############

    export appname="example-springbootmvc"

    export master_user="root"
    export master_appsdir="/apps"
    export master_iplist="192.168.1.41"

    export test_user="root"
    export test_appsdir="/apps"
    export test_iplist="192.168.1.42"

    export release_user="root"
    export release_appsdir="/apps"
    export release_iplist="192.168.1.43,192.168.1.44"

    export publish_user="root"
    export publish_appsdir="/apps"
    #定义choice paramter DEPLOY 可选值 group01 group02
    export publish_group01_iplist="192.168.1.45"
    export publish_group02_iplist="192.168.1.46"


    /root/jenkins/scripts/distanddeploy.sh

    ####################

    在distanddeeploy.sh中

    if [ "$BRANCH" = "publish" ]; then
    eval iplist=$${BRANCH}_${DEPLOY}_iplist
    fi

    这里使用了DEPLOY变量,这个变量只会影响publish构建过程。

    手动触发构建时,BRANCH填publish,  DEPLOY选择group01时,对应的是

    export publish_group01_iplist="192.168.1.45"

    将会部署192.168.1.45节点

    当DEPLOY选择group02时,对应的是

    export publish_group02_iplist="192.168.1.46"

    将会部署192.168.1.46节点

    部署完成之后验证

    在浏览器上输入 

    http://192.168.1.45:9303/rest/get

    http://192.168.1.46:9303/rest/get 

    返回类似于:

    {"retCode":0,"errMsg":null,"data":{"userId":"11111","timeStamp":1521293070588,"info":"this is 9 env:realpublish"}}

    这就表示部署成功啦!! 

  • 相关阅读:
    屏蔽鼠标右键/F1帮助
    vs2010如何连接到mysql数据库
    经典的数据库设计贴吧
    js子窗口刷新父窗口
    数据库三大范式
    写给毕业生
    SQL Server权限数据库设计
    .NET
    ASP.NET MVC框架(第一部分) 【转】
    什么是SQL注入法攻击 .
  • 原文地址:https://www.cnblogs.com/brandonli/p/8592867.html
Copyright © 2011-2022 走看看