本申请涉及计算机,尤其涉及一种基于云原生可视化流水线多环境共存配置系统和方法。
背景技术:
1、软件开发中,研发及测试的持续集成,使用的工具更多为jenkins、gitlab中ci(持续集成)的特性,这类工具存在以下局限性:
2、第一、能力要求高,语法复杂。需要用户熟悉对应的开发语言如:groovy、yaml配置规范、shell脚本编写等,对用户能力要求高,门槛高,即使具备对应的能力要求,也需要用户对服务器环境配置、资源十分了解,才能稳定运行;
3、第二、可视化配置低,都是通过手动配置对应的内在语言逻辑实现串、并联任务执行,需要人工手动维护,导致维护成本高,易出错,可视化较差,同时,单元任务之间的流程拓扑图不能直观显示,可视化程度不高,需要借助各种插件,页面之间来去切换;
4、第三、日常cicd系统需要依赖多个环境,流水线中每一个任务单元所涉及的环境依赖没有区分,满足不了原子单元模块可任意组装的要求,导致环境依赖大而乱,环境治理混乱;
5、第四、构建过程中的单元测试、代码扫描、自动化测试等数据散落各个系统,不能集中可视化呈现,导致产品质量数据需要访问不同系统进行收集,企业产品质量红线落地难,过程繁琐,无法有效管控产品质量。
技术实现思路
1、本申请示出了一种基于云原生可视化流水线多环境共存配置系统和方法。
2、第一方面,本申请示出了一种基于云原生可视化流水线多环境共存配置系统,包括系统预配置模块、可视化配置模块、配置转换模块和可视化编排模块,所述系统预配置模块进行凭证配置和镜像配置;所述可视化配置模块用于对流水线配置基本信息、流程配置、触发配置、变量和缓存;所述配置转换模块用于实现多构建环境共存配置自动转换和任务间流程拓扑图配置自动转换;所述可视化编排模块用于实时查看编排状态、任务日志、编排结果、持续时间和可视化质量数据。
3、第二方面,本申请示出了一种基于云原生可视化流水线多环境共存配置系统的方法,所述方法包括:
4、进行系统预配置,包括凭证配置和镜像配置;
5、创建流水线,选择流水线模板;
6、对流水线进行基本信息配置、代码源配置、任务配置、触发配置和变量配置;
7、通过配置转换算法,采用声明式pipeline语法实现多构建环境配置自动转换和任务间流程拓扑图配置自动转换;
8、基于jenkins参数化构建特性,将任务调度到k8s上执行,并通过websocket技术推送信息到前端,实现流程编排可视化。
9、根据本申请第二方面的方法,所述多构建环境配置自动转换包括:
10、基于云原生技术和jenkins file中的声明式pipeline语法,对pod进行定义,一个所述pod运行多个容器,每个所述容器均有唯一标识,所述容器通过所述唯一标识可共存在多个构建环境中,用于执行不同的单元化构建命令;
11、基于k8s的yaml配置特性,自定义对象模型,将解析的所述镜像配置初始化到所述对象模型中,通过工具包格式化为字符串,初始化jenkins pipeline中的agent块和agent块的kubernetes块语法,填充kubernetes块里面的k8s名称、命名空间及权限账号,然后将yaml的结果赋值给spec块。
12、根据本申请第二方面的方法,所述任务间流程拓扑图配置自动转换包括:
13、自定义对象模型,结合jenkins声明式pipeline的groovy对stage的串联和并联的语法,将groovy的语法抽取成stage块;
14、初始化所述stage块配置;
15、对所述stage块配置进行填充;
16、循环paralleljobinfolist,获取其构建命令、任务类型、插件配置、构建镜像和下游任务信息,所述paralleljobinfolist里的每一个任务信息对应一个所述stage块,解析下游任务信息;
17、执行下游任务;
18、对所述下游任务进行解析。
19、根据本申请第二方面的方法,所述任务配置的基本信息包括镜像版本、执行指令,质量门禁检测、质量红线设置、人工卡点、任务重试、企业微信通知和执行条件。
20、根据本申请第二方面的方法,所述触发配置支持webhook触发、可视化定时配置和分支匹配,在代码托管平台粘贴平台提供的url,填写分支正则表达式。
21、根据本申请第二方面的方法,对所述stage块配置进行填充,包括:
22、所述stage块内设置有steps块和post块,所述steps块内设置有container块和script块,每一个所述任务信息都有运行的环境依赖和运行脚本,所述环境依赖配置到所述container块中,所述运行脚本配置到所述script块中。
23、根据本申请第二方面的方法,解析的所述对象模型的信息包括镜像配置信息、数据挂载、凭证secert和调度策略信息。
24、根据本申请第二方面的方法,在所述对象模型中,接收到stageinfodto数据,获取根节点,所述根节点包括第一个stage信息,提取到第一个stage信息后,对一个所述stage块配置进行初始化操作。
25、根据本申请第二方面的方法,当paralleljobinfolist长度大于1时,所述pipeline语法parallel块结构将paralleljobinfolist的任务包含起来。
26、本申请提供的技术方案可以包括以下有益效果:
27、本申请通过流水线、原子任务模板化,流程拓扑图单元化自由装配,提供原子单元任务环境依赖自定义,结合jenkins和k8s特性,自动生成pipeline配置;基于以上配置,可对资源实现动态伸缩、水平扩展;同时支持多构建环境共存治理、容器用完即丢弃,可大量节约资源的占用,进而实现环境治理,大幅降低使用门槛,同时还可提供直观的可视化流程拓扑图及流程编排可视化。
28、此外,通过不同的触发器,进一步提高自动化效率,使研发及测试人员只需关注业务,缓解相关人员的工作压力;同时通过系统打通上下游工具,收集各阶段运行数据并可视化,借助直观的可视化数据,保证产品的质量,也可协助企业进一步挖掘研发效能,制定不同研发的流程和策略,降低了研发及测试人员使用ci&cd门槛,同时解决了繁琐的手动配置、不够直观的流程编排可视化、环境治理混乱、质量数据散落等问题。
1.一种基于云原生可视化流水线多环境共存配置系统,其特征在于,包括系统预配置模块、可视化配置模块、配置转换模块和可视化编排模块,所述系统预配置模块进行凭证配置和镜像配置;所述可视化配置模块用于对流水线配置基本信息、流程配置、触发配置、变量和缓存;所述配置转换模块用于实现多构建环境共存配置自动转换和任务间流程拓扑图配置自动转换;所述可视化编排模块用于实时查看编排状态、任务日志、编排结果、持续时间和可视化质量数据。
2.一种基于云原生可视化流水线多环境共存配置系统的方法,其特征在于,所述方法包括:
3.根据权利要求2所述的基于云原生可视化流水线多环境共存配置系统的方法,其特征在于,所述多构建环境配置自动转换包括:
4.根据权利要求2所述的基于云原生可视化流水线多环境共存配置系统的方法,其特征在于,所述任务间流程拓扑图配置自动转换包括:
5.根据权利要求2所述的基于云原生可视化流水线多环境共存配置系统的方法,其特征在于,所述任务配置的基本信息包括镜像版本、执行指令,质量门禁检测、质量红线设置、人工卡点、任务重试、企业微信通知和执行条件。
6.根据权利要求2所述的基于云原生可视化流水线多环境共存配置系统的方法,其特征在于,所述触发配置支持webhook触发、可视化定时配置和分支匹配,在代码托管平台粘贴平台提供的url,填写分支正则表达式。
7.根据权利要求4所述的基于云原生可视化流水线多环境共存配置系统的方法,其特征在于,对所述stage块配置进行填充,包括:
8.根据权利要求3所述的基于云原生可视化流水线多环境共存配置系统的方法,其特征在于,解析的所述对象模型的信息包括镜像配置信息、数据挂载、凭证secert和调度策略信息。
9.根据权利要求4所述的基于云原生可视化流水线多环境共存配置系统的方法,其特征在于,在所述对象模型中,接收到stageinfodto数据,获取根节点,所述根节点包括第一个stage信息,提取到第一个stage信息后,对一个所述stage块配置进行初始化操作。
10.根据权利要求4所述的基于云原生可视化流水线多环境共存配置系统的方法,其特征在于,当paralleljobinfolist长度大于1时,所述pipeline语法parallel块结构将paralleljobinfolist的任务包含起来。