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"}}

这就表示部署成功啦!!

使用gitlab, jenkins搭建CI(持续集成)系统(4) 灰度发布publish的更多相关文章

  1. Jenkins的CI持续集成

    Jenkins的CI持续集成 全局配置 系统管理->全局工具配置,配置Git,JDK和Maven 1)解压maven到当前目录 tar zxf apache-maven-3.5.4-bin.ta ...

  2. 基于jenkins搭建一个持续集成服务器

    1 引言 1.1 编写目的 指导质量管理部,业务测试组同事进行Jenkins环境部署,通过Jenkins解决测试环境不可控,开发测试环境不一致等问题. 1.2 使用对象 质量管理部.基础研发部,集成部 ...

  3. 使用gitlab, jenkins搭建CI(持续集成)系统(1) -- 准备环境

    1. 环境设计 搭建一个从开发到测试知道发布上线可以自动换完成的CI系统.这个系统中包含4个环境. 开发(dev)环境: 码农使用. 测试(test)环境: 测试人员使用. 预发布(prepublis ...

  4. docker + gitlab + jenkins 搭建 CI/CD 系统

    gitlab+jenkins+docker 计算机网络大全

  5. 使用gitlab, jenkins搭建CI(持续集成)系统(3) -- 根据不同触发条件执行不同的构建任务

    前面在jenkins中安装的gitlab hook支持不同的参数,具体可以参考gitlab hook文档https://github.com/jenkinsci/gitlab-hook-plugin# ...

  6. 使用gitlab, jenkins搭建CI(持续集成)系统(2) -- 配置webhook触发构建

    1. 在gitlab上配置192.168.1.30的ssh秘钥,使jenkins可以操作gitlab上的project 进入gitlab,点击右上角 点击 Settings -> SSH key ...

  7. [原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接

    近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更多的人在说协同开发.敏捷开发.迭代开发.持续集成和单元测试这些拉风的术语.然而,大都是仅仅听到在说而已,国内 ...

  8. CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接

    原文地址https://www.cnblogs.com/kevingrace/p/5651447.html 近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更 ...

  9. Git Hooks、GitLab CI持续集成以及使用Jenkins实现自动化任务

    Git Hooks.GitLab CI持续集成以及使用Jenkins实现自动化任务 前言 在一个共享项目(或者说多人协同开发的项目)的开发过程中,为有效确保团队成员编码风格的统一,确保部署方式的统一, ...

随机推荐

  1. hdu4048

    题意:给定m个数,还有n,n表示有一个长度为n的环,现在要求从M个数中选出若干个数,要求选出的数最大公约数为1,填充在n个位置中,选出的数可以重复,求多少种种方案.旋转当成一样的 . 思路:假设现在选 ...

  2. [译]C#和.NET中的字符串

    原文地址:Jon Skeet:Strings in C# and .NET System.String 类型(在C#语言中对应的别名是string)是.NET最重要的类型之一,不幸的是在它身上存在了太 ...

  3. Golang Email

    Backup Code I dont have chinese inputmethod now ( what the fuck about Linux KDE envirnment !) , so j ...

  4. WPF 右上角带数字的按钮

    效果如图所示 三种方案, 1:不改控件模版,布局实现,死开 2:改button模版,利用附加属性,附加附加属性,功能多了话,不利于拓展 3:继承button,添加依赖属性,接下来是这种 1:新建类 为 ...

  5. Android开发教程 - 使用Data Binding(二)集成与配置

    本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fr ...

  6. [POI2015]LOG(树状数组)

    今天考试考了这题,所以来贡献\([POI2015]LOG\)的第一篇题解.代码略丑,调了快三个小时才调出来\(AC\)代码. 对于这种小清新数据结构题,所以我觉得树状数组才是这道题的正确打开方式. 首 ...

  7. es6新增Math方法

    Math.trunc()  用于去除一个数的小数部分,只返回整数部分 Math.trunc(4.1) // 4 Math.trunc(4.9) // 4 Math.trunc(-4.1) // -4 ...

  8. Network - Tips

    001 - 查询whois 可通过在线工具进行查询: https://www.whois365.com http://whois.aliyun.com http://whois.chinaz.com ...

  9. AutoCompleteTextView搭配Poi搜索实现多项选择

    项目需要 需要用到AutoCompleteTextView控件,在输入之后能在下方产生一个推荐结果的列表,就类似于金山词霸一类软件.输入一两个字符就能出来一系列类似的的单词, 这里做的例子是输入城市名 ...

  10. 【sping揭秘】11、Java 平台上的AOP实现机制

    动态代理 Jdk1.3只有引入的动态代理机制,可以再运行期间,为相应的接口(必须得有接口)动态生成对应的代理对象 基于以上问题,我们可以将横切关注点逻辑封装到动态代理的invocationhandle ...