• Jenkins延迟触发构建项目


    一、背景

    1. 需求

    公司采用蓝绿发布模式上线代码,当把代码通过 Jenkins 发布到绿色环境上的时候,测试大概有2个小时的时间去测试,如果测试没有问题的话,通过脚本调用阿里云SLBAPI的方式更改蓝绿环境服务器的权重实现发布。

    我们打算把改权重的脚本在 Jenkins 上,当执行完绿色环境的 job 后,延迟两个小时自动执行更改权重的job(这段时间用于测试)。
    image-20200412164343851

    2. 环境说明

    Job名称 对应关系 说明
    release-chaifen-fabu Job A 通过文本参数进行传参,输入要发布的环境(蓝、绿)和要发布的服务
    change_weight_test Job B 通过文本参数进行传参,输入要上线的环境为蓝色还是绿色

    release-chaifen-fabu
    image-20200412170248260

    change_weight_test
    image-20200412170322139

    二、配置

    1. 配置延时触发

    1.1 非Pipeline配置

    需要使用到 Join插件 ,自行安装,在构建后操作中配置,可参考利用Jenkins插件实现多个job并行后再触发job
    image-20200412165954925

    1.2 Pipeline配置

    需要在 Job B 中配置延迟触发机制,由于是测试环境,所以将延迟时间设置为150秒.

    release-chaifen-fabu 构建用完后,等待150S再构建此 Job
    image-20200412170900109

    测试可以成功,但是有个新的问题,我的 Job B 也需要传参,传入 Blue 或者 Green ,这个该如何实现?

    2. Job间传参

    2.1 非Pipeline配置

    需要使用到 Parameterized Trigger plugin插件 ,自行安装,安装不成功的话,可以重启 Jenkins 试试
    image-20200412172402966

    接下来操作可参考Jenkins:多job之间带参数触发的实现

    2.2 Pipeline配置

    由于我们采用的是 Pipeline 没有 构建后操作 选项,我们将 Job A 中的参数传到文本中

    Get-Date -Format 'yyyy.M.d.H.m' >> C:\fabulogs\test.txt
    echo "SystemName:$xinxi" >> C:\fabulogs\test.txt
    echo "BusinessEnv:$system" >> C:\fabulogs\test.txt
    echo "SystemEnv:$huanjing"  >> C:\fabulogs\test.txt
    

    C:\fabulogs\test.txt 内容如下

    ########################
    2020.4.13.22.44
    SystemName:OscarSystem.BatchDownWorker
    BusinessEnv:0
    SystemEnv:Blue
    ########################
    上线蓝色环境
    2020.4.13.22.45
    ########################
    2020.4.13.23.6
    SystemName:OscarSystem.BatchDownWorker;OscarSystem.Service;OscarSystem.ServiceWorker
    BusinessEnv:0
    SystemEnv:Green
    ########################
    上线绿色环境
    2020.4.13.23.6
    ########################
    2020.4.13.23.7
    SystemName:OscarSystem.BatchDownWorker;OscarSystem.Service;OscarSystem.ServiceWorker
    BusinessEnv:0
    SystemEnv:Blue
    

    Job B 执行的脚本中,规定其通过读取发布的日志文件( C:\fabulogs\test.txt )方式传参

    # 取出包含SystemEnv内容的最后一条信息
    # $a=SystemEnv:Blue
    $a=(cat C:\fabulogs\test.txt | findstr "SystemEnv"  | C:\tools\tail.exe -n 1 )
    # $huanjing=Blue
    $huanjing=($a -split ":")[1]
    

    使用的是 Windows 环境,需要下载 tail for windows

    别妄自尊大! 别妄自菲薄! QQ技术交流群:Linux架构师之路~ 471443208
  • 相关阅读:
    emberjs 循环中设置model的不同属性值
    FUTURE .get 异常抛出会如何提示
    cpu ,鲲鹏,x86,主频,门电路,目录
    复制两个类的相同属性
    【深入Java虚拟机(1)】:Java内存区域与内存溢出
    RPC web service
    webservice
    django中配置Pymsql
    定义函数和调用函数的方式,函数形参和实参的介绍
    python名称空间与作用域
  • 原文地址:https://www.cnblogs.com/oldxu/p/15463881.html
Copyright © 2020-2023  润新知