基于DevOps的持续集成与持续交付流程研究

2024-02-15 00:00:00屠趁锋
无线互联科技 2024年24期

摘要:随着软件开发的不断演进与创新,基于DevOps一体化平台的持续集成与持续交付已成为企业提高软件质量与交付速度的核心策略。文章探讨了基于DevOps一体化平台的持续集成与持续交付流程架构,介绍了一体化平台与接入规范。研究结果显示,基于DevOps一体化平台的持续集成与持续交付机制有助于推动企业在数字化转型中的持续创新与优化,实现高质量的快速交付,进而提升企业的竞争力和灵活性。

关键词:持续集成;持续交付;一键发布;一键升级

中图分类号:TP311" 文献标志码:A

0 引言

随着软件开发的不断演进,确保软件产品的高质量快速交付已成为衡量企业核心竞争力的重要指标[1。为了能够满足快速迭代和自动化交付的需求,基于DevOps的持续集成与持续交付的理念应运而生,并且已经被越来越多的企业投入使用。DevOps一体化的核心在于消除传统开发流程中的壁垒,提高跨部门之间的协作,持续集成持续交付是优秀的软件开发实践,保证了软件开发的持续性,提高了软件开发的质量与交付速度[2

当前,国内外许多知名企业已经建立了自己的持续集成持续交付系统,如阿里的云效平台、百度的效率云等。这些实践案例证明,持续集成与持续交付可以为软件的快速迭代和高质量开发应用提供重要保障。对于持续集成与持续交付的实践,较多中小型企业仍处于探索阶段,且目前关于研发交付机制完整工作流的相关介绍较为有限。本文以H公司研发云一体化平台为基础,探讨持续集成与持续交付系统架构,旨在提供理论支持与实践指导,帮助企业建立安全高效的软件研发交付流程生态。

1 一体化平台与接入规范

1.1 一体化平台

研发云作为一体化的DevOps实践平台,构建了一套全链路自动化机制,涵盖了从源代码管理到应用系统部署的整个流程。研发云以客户需求为核心,采用快速迭代和循序渐进的方法进行软件开发,强调团队间紧密协作,以更好地适应需求变化[3。作为端到端、标准化、自动化且敏捷的产品集成与交付体系,研发云显著缩短了软件交付周期。与传统的瀑布式开发模式相比,基于DevOps一体化的开发方式提供了更及时的阶段性结果反馈,需求拆分更加细化,使团队能够更快地应对变化。

开发运维的实践和方法论不仅取决于一体化平台本身所提供的丰富功能集,还依赖于应用开发、部署及维护过程中严格遵循的标准化规范。该规范是奠定自动化工具高效运作的基础,也是实现与DevOps一体化平台无缝衔接不可或缺的先决条件[4

1.2 配置项管理

配置项涵盖内容广泛,包括但不限于源代码、产品版本、产品分支、应用文件、镜像文件、脚本文件、菜单文件以及操作日志文件等,它们共同构成了软件的基础框架。源代码、配置文件、应用文件、菜单文件、规则文件、API文件以及操作日志文件等软件配置项,通过集成至一体化平台中的Git版本管理工具进行管控;配置文件中包含各种运行所需的参数,如系统配置参数、消息队列主题、网关配置、应用实例数量、容器数量、镜像文件、产品版本、产品分支,存储在一体化平台系统中管理;数据库脚本以任务的形式记录在任务单中进行管理。通过研发云一体化平台统一管理配置项的机制,简化工作流程,提高开发效率,促进软件开发的敏捷性和质量。

1.3 配置项接入规范

在软件开发生命周期的端到端流程中,即从源代码的编写到应用系统成功部署至生产环境的过程中,配置项作为支撑软件构建、测试、部署及运维活动的基础元素,其标准化策略对于确保持续集成与持续交付系统的有效性与可靠性至关重要[4

配置项的接入规范主要是标识规范化,以ctm产品为例,如表1所示,制定相关配置项的标识规范是ctm产品接入一体化平台实现持续集成与持续交付运行的前提条件。

配置项接入规范过程包含以下几个重要环节。(1)明确责任人。配置项规范体系应指定明确的责任人制定配置项规范定义和校验机制。该机制应集成于一体化平台,能够自动对配置项进行合规检查,确保其符合规范定义。(2)持续改进校验机制。随着软件的演进,规范制定者应不断优化改进校验机制,以提高校验规则的适应性和准确性。(3)建立反馈与修正流程。针对校验过程中发现的不符合规范的配置项,应建立清晰、便捷的反馈与修正流程,包括向相关人员发送通知、提供违规描述以及指导说明等。(4)实施持续监控与评估。配置项被录入并应用于系统后,应实施持续的监控与评估机制,以确保其在实际运行中的表现符合预期。该过程包括性能监控、错误日志分析以及用户反馈收集等方面,以便及时发现并解决潜在问题。

2 持续集成与持续交付流程研究

2.1 总体框架

本文基于研发云一体化平台,设计了与软件开发周期相适应的持续集成与持续交付流程,包括持续集成、持续交付、一键发布和一键升级4个关键阶段,持续集成与持续交付架构如图1所示。

2.2 持续集成

持续集成是一种保证代码质量的软件开发实践,它的核心理念在于将源代码集成的频率提升至每日甚至每次提交,通过执行自动化构建与自测流程,开发人员能够高效地检查变更代码中的语法错误和功能缺陷,并及时进行修复[5

持续集成主要包括代码下载、代码编译、静态代码检查、单元测试、镜像构建等关键步骤。本文主要阐述以任务单维度触发的持续集成流程,旨在提高软件开发过程的高效性和代码质量。开发人员根据具体的任务单,从发布分支提取特定的代码分支,在本地环境中对源代码进行变更修改。开发人员将修改后的代码提交至相应的特性代码分支时,系统将自动触发持续集成构建。该构建过程将执行全面的质量检查,包括编译检查、单元测试、代码度量分析、代码风格检查以及静态代码分析等多个方面。质量检查确保代码的质量符合既定的规范标准,降低潜在的缺陷和技术不足。若在检查过程中发现问题,开发人员将根据系统提示日志进行相应的代码修改。修改完成后,开发人员将更新的代码再次提交至特性分支,触发第二次持续集成。该过程将循环进行,直至所有检查项通过为止。通过所有质量检查后,代码将自动合并至过程分支,并生成应用镜像更新至测试环境,进行需求验证,确保最终交付的软件产品符合用户需求和预期。

持续集成的优势和价值在于及早地识别错误,快速地反馈结果,降低问题向下游测试阶段泄露的风险,并促进开发人员不断完善自测用例,从而提升整体代码质量和测试效能。

2.3 持续交付

持续交付是持续集成的进一步实践和扩展,侧重于自动化构建和更新至测试环境,对开发人员在过程分支提交的代码进行全面验证,以确保新功能和变更的正确性[6

本文从2个维度阐述持续交付。(1)针对任务单维度的持续交付流程。开发人员根据任务单提交代码至过程库后,系统会自动触发构建生成镜像并更新至测试环境。测试验证包括脚本验证、自动化测试用例执行和功能点验证。若发现错误或验证不通过,测试人员将根据日志进行排查并优化自动化用例或退回任务单给开发团队进行修改。这一过程持续进行,直至所有验证通过。完成验证后,任务单将转入合并至发布分支的环节,系统会自动执行合并命令,将已验证通过的代码整合至发布分支。(2)公用的JAR包也会被推送至私服,以供其他产品代码构建使用。另一方面,为进一步提高产品代码质量,配置管理员在DevOps平台上设定定时任务,每晚22:00自动启动所有产品的持续集成构建流程,对发布分支进行再次集成验证。验证过程包括编译、语法检查、集成测试等多个方面,确保代码质量符合标准。源码验证通过后,系统自动触发镜像制作,生成带有发布标识的镜像存储在仓库中,为后续发布做准备。

持续交付不仅降低了版本发布前集成验证可能出现的风险,还通过系统化的自动化测试流程及时发现并修复了潜在缺陷,为版本的自动化验收和快速交付提供了重要保障。

2.4 一键发布

一键发布是DevOps实践中的重要环节,通过该工具自动获取镜像文件、应用文件、数据库脚本、配置文件、系统参数、菜单文件等配置项,生成可用于一键升级操作的版本包,以提高版本发布的效率和可靠性。

在H公司,版本制作和发布操作由专职的配置管理员负责。在版本制作过程中,配置管理员使用研发云平台的一键发布功能,根据预设条件提取经过持续交付验证并存储于镜像仓库和一体化平台数据库中的各类配置项。经过检查确认无误后,进行一键式发布,并对配置项进行归档。一键发布操作的主要目的是将指定的配置项整合为一个完整的升级包,极大地简化了版本制作过程,提高了发布速度和效率,减少了人工干预,降低了错误风险。此外,发布历史被清晰记录在平台系统中,方便后续追溯和分析。这种系统化记录方式增强了透明度,使相关人员能够对每次发布进行详细审查和分析,快速定位和解决问题。通过历史数据分析,研发团队能够发现潜在瓶颈和改进点,持续优化发布流程,提升软件代码质量。

2.5 一键升级

一键升级采用可视化编排方式,使用Kubernetes命令、应用文件、配置文件、镜像文件以及脚本文件的方式实现将版本包自动更新至生产环境。其中,应用升级的配置文件主要有2类:configmap.yaml和deployment.yaml。镜像文件和应用文件的配置信息都集成到yaml配置文件中,系统在自动化升级过程中读取配置文件中的信息,将最新的镜像文件无缝升级至Kubernetes集群,实现快速、可靠的应用更新和部署。相较于传统的升级模式,一键升级机制在软件版本迭代更新和生产环境版本管理方面具有显著优势。首先,提高软件版本更新部署速度和效率,减少时间和人力成本。其次,增强升级过程的可靠性和一致性,降低操作失误导致系统故障的风险。最后,工具自动对脚本、镜像等进行正确性校验,实时展示升级进度和日志,自动生成升级报告,为生产环境版本管理提供更高的可追溯性和透明度,有助于合规性检查及问题定位与解决。

一键升级过程涉及如下关键步骤。(1)生产环境备份。正式升级前备份生产环境数据,以便在出现问题时能够快速回退,降低系统风险并保障业务连续性。(2)升级包导入。根据指定的目录获取升级包并将其下载上传至目标服务器,随后进行解压和验证操作,以确保升级包文件完整无损。接着,通过一键升级界面将版本包信息导入目标环境。当数据库资源、镜像资源以及菜单文件等配置项的图标全部显示为绿色时,表明版本包含的配置项已成功导入,可以继续进行下一步的升级编排。(3)配置项编排。根据目标环境需求对升级包中的SQL脚本、配置数据、配置文件、应用文件以及应用本身进行编排,确保资源整合顺利实施。H公司根据脚本是否能自动执行将其明确区分为红色脚本和蓝色脚本,以便管理和执行。红色脚本指需要手动执行的脚本,例如对大型表字段的修改,这类操作因其复杂性和潜在风险,通常不适合自动执行。相比而言,蓝色脚本指可以安全自动执行的脚本,例如增加表数据的任务。此外,配置数据作为应用的业务数据,包括Open API定义、Offer、资费配置、客户通知及账单模板等,支持独立升级,增强灵活性。配置文件包含应用运行所需的定义数据,如菜单文件、规则文件和API文件,而应用文件包含应用运行所需参数,如系统配置参数、消息队列主题及网关配置等。发布说明详细列出本次升级包中的任务单明细及相关描述信息。(4)实施部署。将升级包中的组件部署至目标系统,包括更新现有应用及执行数据库脚本等。升级编排支持单个应用的独立升级,也允许同时升级产品及其定制版本。镜像采用定制版本,脚本、配置文件和标准配置包结合产品与定制内容特性,确保兼容性和功能完整性。(5)功能测试。升级完成后,进行全面的功能测试,以确认新版本的应用正常运行且未引入新问题。(6)监控与反馈。在升级后的初期阶段,密切监控系统运行状态,收集用户反馈,以保障系统稳定性。(7)文档更新。记录升级过程、变更内容及遇到的问题,以便后续参考和改进。

3 结语

本文基于DevOps一体化平台,构建了一套自动化持续集成与持续交付系统流程,并阐述了各个环节的实现方式。该集成与交付流程具有较强的通用性,易于移植和实施,为持续集成与持续交付的学术研究和实践提供有益参考。持续集成与持续交付的实践促进开发、测试和运维之间的紧密合作,有助于提升项目交付的灵活性和响应速度,使企业能够高效地适应快速变化的市场需求和技术挑战。

参考文献

[1]乔玮,赵文瑞.DevOps发展现状及趋势研究[J].数字技术与应用,2018(4):74-76.

[2]李超,花磊,宋云奎.OpsFlow:一种面向DevOps的应用自动化部署引擎[J].计算机与数字工程,2019(1):190-194,247.

[3]王晓龙.基于敏捷开发的持续交付系统的研究[J].信息技术,2023(5):131-136.

[4]田健.基于DevOps的软件开发项目管理研究[D].北京:北京邮电大学,2023.

[5]付乔,张昊.持续集成持续交付的NFV/SDN网络新型集成体系[J].移动通信,2019(7):22-27.

[6]龚桂芬,龚兰兰.基于Devops的软件项目开发实践[J].工业控制计算机,2022(4):87-89.

(编辑 沈 强编辑)

Research on continuous integration and continuous delivery process based on DevOps

TU" Chenfeng

(Whale Cloud Technology Co., Ltd., Nanjing 210000, China)

Abstract:" With the continuous evolution and innovation of software development, continuous integration and delivery based on DevOps integrated platform has become the core strategy for enterprises to improve software quality and delivery speed. The article delves into the architecture of a continuous integration and continuous delivery system based on the DevOps integrated platform, introduces DevOps integrated platfrom access specification. The research results show that the continuous integration and continuous delivery strategy based on DevOps integrated platform not only helps drive continuous innovation and optimization in enterprises’ digital transformation, but also enables rapid delivery of high-quality versions, thereby enhancing the competitiveness and flexibility of enterprises.

Key words: continuous integration; continuous delivery; one click deployment; one click upgrade