我们知道,在DevOps模式下或CI/CD流水线中,制品管理起着承上启下的关键作用,它对这些制品进行统一的管理。所以说,制品对持续集成而言是终点,同时也会是持续发布或者持续运营的起点。对可部署的制品,运维团队可以基于制品包发起部署操作,并拉取相应环境下的服务;对于需要进入市场的发布包,运营团队可以基于制品包,分发至不同的市场渠道。制品在整个研发过程中,如图1中所示的流程来发挥其应有的作用。
显然,在研发过程中,任何企业或组织都不可能每次都直接从代码开始重新构建产品,而脱离制品管理;此外,“一次构建,多次使用”的原则,也是企业或组织提升生产效率的必由之路。因此,在后续内容中,我们将探讨在“一包到底”的模式下,制品晋级治理方案。
图 1 制品在DevOps中扮演角色
说起“一包到底”,我们讲的是上文中所提及的“一次构建,多次使用”的原则。这个原则下,在研发阶段表现为一个包构建完之后可以用于不同的测试环境、不同测试阶段、且可以被用作依赖;在运维阶段表现为,同样的包测试完成后,可以直接用于部署;在运营阶段表现为同一个制品包经过测试验证、产品验收后可以直接面向市场、面向用户。
如下图2 所示,在开发实践过程中,企业通常会设立开发(DEV)、测试(TEST)、预发布(UAT)、生产(RELEASE)等不同的环境。在此过程中,研发团队需要确保各个角色交付和处理的对象(部署镜像、部署包、配置项等)的一致性至关重要。这意味着,随着项目推进至不同阶段,可能会启用不同的流水线来执行测试、部署等任务。我们需要对各个不同的阶段设置准入的原则。这个原则的制定和落定就衍生出来了“制品晋级”的概念。
所以,“一包到底”就是相同的制品,在不同阶段活动下使用,并结合恰当的准入门禁(制品晋级)来落地。
经过上文的阐述,我们认识到仅凭简单的制品版本号信息,难以准确判断制品是否已达到可交付的标准。在此背景下,一个科学合理的制品晋级治理方案显得尤为重要。
图 3 中展示了制品晋级整体方案的核心要点。在制品等级划分方面,我们可以根据具体业务需求,灵活选择最适合的方式。同时,制品晋级规则在某种程度上,也反馈出了团队实施制品晋级治理时面临的业务实际约束诉求。这样,通过这一套治理的方案,借助这一治理方案,团队成员能够迅速掌握当前版本制品的真实状态,比如是否已具备测试条件、是否可进入预发布阶段、是否可投放市场等,从而做出更加精准的决策。
为了满足企业对源码编译后产出物的有效管理和便捷使用需求,同时帮助团队更加直观、准确地评估制品的成熟度,我们根据过往的交互案例,提炼出以下推荐实践。
团队为不同的交付流程设定了明确的等级(此处包括:SIT、UAT、Pre-PROD、DEPLOY),在不同的交付流程中,不同的角色会根据当前交付流程(开发、测试、部署生产)的准入规则,为制品打上晋级等级的标签,并将这些信息详细写入到元数据中。团队通过查看制品包的等级信息,便可以迅速直观地了解制品的成熟度状态,进而判断后续操作是否合规或适宜。这种做法不仅提升了工作效率,还确保了制品在各个环节中的质量和一致性。
综上所述,制品晋级能够与DevOps的持续集成与持续部署流程实现无缝融合。在编译构建任务中,构建产物会被自动归档至制品库。随后,在制品库内执行预设的晋级规则,为同一制品在其生命周期的不同阶段赋予相应的“晋级”标识(即打上不同的等级标签)。紧接着,部署工具会从制品库中提取所需制品,并对接相应的环境进行部署操作。
这种晋级治理模式,已成为企业应对软件开发过程中产生的各类包文件管理的通用且高效手段。它不仅提升了软件开发的流畅性和效率,还确保了制品在不同阶段的质量可控性和可追溯性,是现代软件开发不可或缺的重要一环。这种晋级治理,是企业处理软件开发过程中产生的所有包类型的行业通用的管理方式。
|