zoukankan      html  css  js  c++  java
  • Omad群组部署、依赖部署一键解决

    本文来自网易云社区


    作者:李培斌

    前言

    基于omad部署平台实现一键部署的实践已有很多成功的经验,杭研QA的技术先锋们也在ks圈里有很多不同的文章去阐述关于这类需求的实现和思路,当然包括我们金融事业部QA这边之前也有利用Jenkins+Omad实现一键部署的场景应用,但本次我想体现的基于omad实现一键群组部署、依赖部署功能,这个有别于之前的“一键部署”功能,一键群组部署、依赖部署工具在我们这边已经上线一个月了,目前功能已比较稳定,因此本文主要围绕该工具的实现进行简要的阐述分享。

    需求

    随着业务的快速发展,业务应用随之增多,每次项目和日常迭代需要部署的应用环境、静态资源、cdn等将近20个,这仅仅是一套环境,对于不同阶段不同环境的部署均会存在重复的情况,比如项目测试环境的一套部署,持续集成环境的一套部署、在线确认环境的一套部署等,由此可知,一个项目的研发过程中投入重复约60次的部署工作已经占用QA很多的时间和精力投入,而且应用依赖的部署只能手工去OMAD平台上一个一个去触发,也降低很多效率,因此我们就会形成一个简单的需求,oamd能否支持一键根据我任意要部署的应用进行批量部署?能否支持应用之间依赖的顺序部署?

    基于以上情况的需求点如下:

    1、一键批量部署

    2、依赖部署

    为平台化的实现以上需求功能,同时结合Omad平台现有的功能,需要做如下需求拓展:

    a、提供配置化的页面,引入分组的概念,实现一键批量部署功能

    b、权限体系维持与Omad一致(个人维度),避免水平和垂直权限紊乱问题

    c、应用环境健康状态自动检查,页面实时检查由工具平台触发的部署进度

    d、产品、应用、环境、实例的关联关系保持与Omad一致

    实现

    设计分析

    工具使用以下Omad的api接口来获取环境列表信息、一键部署、健康检查、用户信息获取等:

    1、/api/cli/ls:获取个人所有的产品、应用、环境及实例的详情信息

    2、/api/cli/estatus:获取某个环境状态详情

    3、/api/cli/vcchange:修改仓库、分支地址

    4、/api/cli/deploy:一键部署

    5、/api/cli/login:获取个人token接口

    由于Omad平台设计的产品体系是以产品为维度划分,应用、环境及实例均挂靠下不同的产品下,通过产品、应用及环境的组合形式来控制权限访问,一键群组部署和依赖部署工具作为部署的页面化入口,其设计理念和原有平台的方式保持一致,工具平台上也是根据产品、应用、环境、实例,层层挂靠递进的模型设计,如下图

    对应的数据传输模型设计,如下图

    Omad的接口/api/cli/ls返回的是一个大的json数组串,因此数据流解析时直接将返回的数据进行JSONArray对象化,利用json数组对象去循环遍历出JSONObject对象,以此类推层层递进,直到将最后里层的Instance给解析出来,而后根据数据传输模型组装成前端需要的json串。

    交互框架


    1、工具平台通过api与omad交互,实现环境数据、部署、健康检查等功能

    2、工具平台根据api返回的数据进行不同类型的处理和组装,返回前端页面处理展示

    3、群组数据落地至本地的mysql库,为持久化部署提供支持

    4、由于环境列表一个非常大的json数组串,每次调用需要处理耗时较久,且个人的环境列表信息变化周期较长,因此该数据做LocalStorage缓存处理,同时提供接口支持手动刷新

    5、权限控制维持Omad体系,第一次使用需用户录入AccessKey和AccessSecret,用户唯一的token标识信息缓存至redis,避免多次交互

    权限控制

    权限控制直接按照Omad原有权限体系来控制,按照个人权限维度做区分,实现从工具平台页面入口的个人产品、应用、环境权限与直接从Omad平台入口保持一致,避免一键群组部署和依赖部署的权限紊乱,引起权限渗透的情况发生。在工具平台这边维护一个用户表,记录录入的AccessKey和AccessSecret信息,以获取用户的唯一标识token信息,从而达到每个用户的权限隔离。

    功能展示

    操作指导


    1、第一次访问工具需要录入OMAD-KEY,或录入的OMAD-KEY信息不正确也需要重新录入

    2、选择产品、选择组,添加部署的应用环境信息,其中仓库地址、分支、版本可以为空,为空则表示维持现有的omad配置而不做修改。

    3、组状态下的应用环境部署状态是可持续化的,离开页面后重新进去组还是会进行健康检查,若无组化部署,离开后则不再检查应用环境的健康状态。

    4、部署失败的应用需要“前往”OMAD平台查看详细的日志,若OMAD在登录情况则直接跳转至对应的应用环境,若未登录则去OMAD登录页面。

    5、应用部署过程中,状态会自动刷新。

    页面展示


    工具现状

    一键部署工具已上线一个月时间,现在已接入30几个用户,建立近300个群组,有效触发一键部署次数达200多次,功能逐渐趋于稳定,欢迎大家前来尝鲜。

    改进问题

    1、组数据的复制功能

    2、个人权限隔离后引起的数据不能共用的问题

    3、部署进度刷新功能存在局限性,无法完全的实时同步

    4、......

    邀请

    Oamd一键群组部署、依赖部署工具是基于Omad平台而开发的一个测试效率工具,理论上所有接入到omad上进行部署的应用,若有群组部署和依赖部署的需求均可以使用本工具作为部署入口,邀请大家一起来尝尝鲜,同时也给出一些宝贵的意见。

    网易云新用户大礼包:https://www.163yun.com/gift


    本文来自网易云社区,经作者李培斌授权发布。


    相关文章:
    【推荐】 视觉设计师的进化
    【推荐】 聊聊空状态设计
    【推荐】 知物由学 | 未来安全隐患:AI的软肋——故意欺骗神经网络

  • 相关阅读:
    火山喷发 计蒜客16862 NOIP模拟赛 概率DP
    洛谷 1429 平面最近点对(加强版) 快排 非点分治或kdtree
    鬼脚图 计蒜客17353 NOIP模拟 归并排序逆序对
    小X的佛光 NOIP模拟赛 倍增LCA 树结构
    小X的质数 NOIP模拟赛 魔改线性筛素数
    Win7Office2010Flash控件无法使用"此演示文稿中一些控件无法激活,可能这些控件未在此计算机中注册"
    【NOILinux】VmWare15使用技巧
    【超链接】导航网站
    C++统计博客园写过的代码行数
    合并多个txt文件到一个
  • 原文地址:https://www.cnblogs.com/zyfd/p/9553174.html
Copyright © 2011-2022 走看看