本文来自网易云社区
作者:李培斌
前言
基于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
本文来自网易云社区,经作者李培斌授权发布。
相关文章:
【推荐】 一个只有十行的精简MVVM框架(下篇)
【推荐】 网站验证码WEB前端接入实例