DevOps 通过自动化“软件交付”和“架构变更”的流程,使得构建、测试、发布软件能够更加快捷、频繁和可靠。
“工欲善其事,必先利其器”,为了有效支撑 DevOps 对标评估,研发中心于 DevOps 工程建设之初,就开展了对管理链 ITA、研发链 TFS、测试链ATP、运维链星云(PaaS)现阶段四大主链的集成研究,结合对标和改进方向,对主链各工具进行改造,目前实现了主链间的集成和数据交互,实现研发、测试、运维工具链贯通,实施流水线配置构建能力的持续提升,依据管理链优化成效,完善流水线建设,支持 5 个试点项目同时通过 DevOps 持续交付 3 级评估。
1 背景介绍
DevOps 工程建设之初,需求、开发、测试、运维人员,使用不同工具来支撑日常工作,工具集成度不高,沟通成本和时间成本较高。
为适应新形势下业务发展和技术革新,研发中心于 2019 年推动工具中台建设,以 DevOps 工具链整合为抓手,将应用需求、开发、测试、部署和运营统一,优化整体协作响应。
2 实现目标
以现有工具为基础,集成各环节流程工具,形成满足持续集成、持续交付、运维反馈的工具链,实现研发闭环、自动化全流程,最终建成贯穿研发与运维的 DevOps 工具链,从而满足试点项目 DevOps 评估需求。
现阶段需实现 ITA、TFS、jenkins、PaaS、星云、制品库、ACMS、单测、代码检查等10 余个工具集成,同时需满足云上、云下项目的工具链全贯通,总体贯通目标如下图所示:
图1 DevOps流水线贯通总体示意图
为满足个各应用系统特性需求,DevOps 工具链全部采取插件方式,即以 TFS 为主线,ITA、ATP、PaaS(星云)为辅线,开发出各种插件,使用时可以灵活进行组装,并利用TFS中的生成定义、Trigger build、管道等特性,形成长流水线,对接开发、测试、星云部署、生产变更等流程。
3 各工具间的集成设计
3.1 TFS 与代码合规检查工具 JTest、DotTest 集成设计
TFS 生成定义中调用代码合规检查插件,在构建的同时,同步启动代码合规检查,将检查结果显示在TFS控制台。为用户提供圈复杂度平均值、圈复杂度最大值、重复率百分比等相关度量数据,具体流程图如下图所示:
图2 TFS与代码合规检查工具JTest、DotTest集成设计流程图
在生成定义中增加合规检查任务,选择 codecheck 插件,输入插件要求的相关检查信息,插件获取相关检查信息,生成检查报告并发送至 ITA,质量门禁依据此指标进行判断。
3.2 TFS 与自动化测试工具 ATP 集成设计
ATP 是我行自主研发的自动化测试平台,支持主机平台、开放平台各类应用系统的接口级和界面级自动化测试,是我行统一的自动化测试资产管理和执行平台。TFS和ATP的打通,将提升从需求到缺陷的测试全流程自动化程度,提升工作效率,降低测试人员操作复杂度。
图3 TFS与自动化测试工具ATP集成设计流程图
TFS 调起 ATP 自动执行,TFS 向 ATP 发送信息后,ATP 自动筛选执行环境资源池后将该系统的全量界面级案例和接口级案例分别建立批次运行,执行完成后向 ATP 代码提交人发送并展示执行报告。
图4 TFS中自动化测试工具ATP插件示意图
3.3 TFS 与制品库集成设计
制品库通过插件的方式与TFS集成,为TFS构建提供全语言依赖解析及制品存储能力,插件支持从制品库中解析构建所依赖的组件、发布构建制品到制品库、收集全部软件生命周期数据,以build-info发布到制品库提供展示。通过插件实现差异化制品晋级,实现制品从测试到投产全过程自动化晋级。
3.4 星云与制品库集成设计
星云平台的部署资源从制品库获取,星云平台具备制品库的读取权限、文件下载权限。具体流程图如下图所示:
图5 星云与制品库集成设计流程图
3.5 TFS 与星云联动设计
TFS 与星云联动,通过 TFS 中发布定义的创建和发布,完成星云端任务单的自动创建和部署。TFS 发布定义插件中集成星云的模板号、应用名称列表,TFS 创建发布定义,触发星云自动建单和部署,TFS 调用星云平台接口,获取部署过程的执行日志。
图6 TFS与星云联动设计流程图
TFS在创建发布定义和发布阶段,分别调用星云平台的获取应用和模板接口及触发部署接口。
3.6 TFS 与 ACMS 集成设计
在ACMS发起变更时,能够线上化选择关联的本次投产TFS需求条目,从而建立变更单与相应需求的追溯,并在投产完成后将投产时间信息自动同步到TFS需求条目属性信息中。
图7 TFS与ACMS集成设计流程图
3.7 TFS 与 PaaS 集成设计
本次 PaaS 云上项目采取 TFS PaaS(Jenkins)的方式实现工具链的贯通。通过TFS触发 Jenkins 进行 CI/CD,包括生成应用 jar 或 war,进行应用镜像构建,将应用镜像推送至镜像仓库,最后部署到集成测试环境等;TFS能同步获取CI/CD相关的日志,在TFS界面上查看到相关的操作结果。
图8 TFS与PaaS集成设计流程图
3.8 质量门禁设计
将代码合规检查结果、源代码安全检查结果、单元测试、接口测试执行结果作为质量门禁,在持续交付中应满足流水线预设控制目标。通过在工具链流水线上各个环节设置质量门禁,强化主干代码质量,实现制品的质量门禁,建立强制执行的质量门禁体系。
图9 TFS中质量门禁插件示意图
4.应用效果
流水线建设组经过一年的攻关,逐步对管理链ITA、研发链TFS、测试链ATP、运维链星云(PaaS)现阶段四大主链进行集成和数据交互,集成各环节流程工具,统一数据视图,形成研发闭环、自动化全流程,形成满足持续集成、持续交付、运营反馈的工具链,有效支撑了我行研发项目 DevOps 持续交付能力成熟度测评,如下图所示为某项目的持续集、持续交付流水线、生成变更及部署流水线应用效果:
图10 某项目持续集成流水线示意图
持续交付流水线:
图11 某项目持续交付流水线示意图
生产变更及部署流水线:
图12 某项目生成变更及部署流水线示意图
5 总结与展望
截止目前,DevOps 工程流水线工具组已初步完成各工具链的集成与数据交互,实现了研发、测试、运维工具链的贯通,支撑了5个试点项目组 DevOps 持续交付能力成熟度测评。
依托持续交付流水线,实现了交付过程的自动化,极大提高了交付效率和质量。下一步研发中心将稳步扩大 DevOps 实践范畴,进行传统模式到 DevOps 模式的转变,收集现有工具链在使用过程中的问题及建议,进行需求整理,分阶段推进 DevOps 集成平台建设,最终建成贯穿研发与运营的工具平台。