vivo 互联网技术

vivo 制品管理在 CICD 落地实践

2024-06-02  本文已影响0人  vivo互联网技术

作者:vivo 互联网效能平台团队 - Chen Lingling

在DevOps实践中,制品管理是一个重要的组成部分,它可以帮助团队快速交付高质量、高可靠性的软件,本文将介绍在 DevOps 领域,vivo CICD是如何进行管理制品,阐述了 CICD 制品管理的演进过程与落地实践,希望能为读者提供一些实践经验和思路。

一、前言

随着软件开发的不断发展,DevOps已经成为了一种流行的软件开发实践方式。在DevOps实践中,制品管理是一个重要的组成部分,它可以帮助团队快速交付高质量、高可靠性的软件,本文将介绍vivo制品管理在CICD的演进过程与落地实践,希望能为读者提供一些实践经验和思路。

名称解释

制品:在广义上指软件开发过程中生成的各种产物,包括软件代码、文档、报告、测试结果等,在狭义上,指软件开发过程中生成的最终产物,如编译产物、打包产物、镜像等。

制品库:制品库即管理制品的中央仓库,用来存储和管理不同格式的软件制品,如源代码,编译后的程序,镜像,配置文件,第三方库和依赖,版本信息等。制品库一般包含存储,版本管理,权限控制,安全扫描,依赖分析等功能,是一种企业处理软件开发过程中产生的所有包类型的标准化方式。

二、vivo CICD制品管理演进

随着DevOps行业的蓬勃发展,行业内越来越关注制品能力的建设;在不断的实践摸索中,vivo CICD制品管理能力也越来越完善,vivo CICD的制品管理发展一共经历了4个阶段,包括手工管理阶段、脚本管理阶段、平台管理 1.0 阶段和平台管理 2.0 阶段。

图1.png

当前CICD 制品管理处在平台管理2.0阶段,这一阶段制品管理具有如下优势

  1. 多类型制品支持:制品库支持一个项目同时存在Generic、Maven、NPM、PyPI、Docker、Helm等多种常见类型,满足多技术栈研发团队的诉求。

  2. 制品统一管理:将软件研发过程中所有制品进行版本管理、集成、协同和发布管理等,从而提高研发效率和质量,支持持续交付和DevOps实践,提升企业竞争力和创新能力。

  3. 制品溯源追踪:基于制品元数据和准入准出规则,进行制品晋级,以制品维度记录从需求到发布的过程数据,实现需求、编码、构建、测试、质量和部署全生命周期过程的强管控,实现可信追溯与安全审计。

  4. 制品安全扫描:检测制品中的潜在安全漏洞和风险,提高系统和应用程序的安全性和可靠性,避免信息泄露和恶意攻击,从而保护企业数字资产的安全。

  5. 降低运维成本:统一管理制品,减少重复建设,降低运维、研发,测试沟通成本。

  6. 制品极速分发:支持多地数据中心上传下载,实现多地数据中心集群部署。

制品管理是软件开发和交付过程中不可或缺的环节,通过制品管理,可以提高软件交付效率、质量和可靠性,降低成本和风险,促进团队协作和沟通,提高管理效率和决策能力,从而提高企业的生产力和竞争力。

图2.png

三、vivo CICD制品管理介绍

3.1 vivo CICD 制品管理概况

1)目前制品库支持:

2)制品生命周期

图3.png

3)制品在研发流程中所起的作用

对于CICD流水线而言,制品起到一个承上启下的关键作用,它是持续集成CI的终点,也是持续交付CD的起点,是研发流程关键组成部分。

图4.png

3.2 制品管理系统架构

图5.png

3.3 核心功能介绍

3.3.1 制品统一管理

制品统一管理,顾名思义在软件研发和部署过程中,对产生的各种制品进行整体的统一管理。主要包含元数据管理,统一存储,制品生成,制品晋级,制品部署,制品扫描,制品老化,权限管控几大功能的管理。

(1)元数据管理

制品元数据是指对制品本身的描述和补充信息,与制品密切相关,是制品管理的一个重要部分。

目前管理的元数据有:

制品名称(MD5/镜像标签)、版本、类型、制品大小、来源信息、源代码、可部署环境、存储地址、扫描报告、依赖信息、制品作者、描述、老化日期,老化状态等。

通过制品元数据对制品有了全方位了解,可以帮助研发,测试,运维等角色快速定位识别制品、进行版本回溯,追踪问题的引入,及时修复安全漏洞等。

(2)统一存储

按照使用场景,制品一般分为三类,统一管理存储在对应的存储器上。

图6.png

(3)制品生成

平台制品的来源分为三类类:手动上传制品,流水线构建、公网引入

图7.png

(4)制品晋级

在整个研发流程中,研发团队一般都有开发,测试,预发,压测,生产环境,而对于不同环境可部署条件是不一样的,即不同的环境对于制品有不同的准入门禁,制品需要通过晋级来达到准入标准。

图8.png

经过代码扫描,编译后制品生成 → 部署开发环境 → 经过安全扫描 → 部署测试环境 → 测试通过,并分发到线上仓库之后 → 部署预发环境 → 部署预发后,验收通过,并提交上线审批工单之后部署生产环境。

目前制品晋级规则比较简单,为了帮助研发团队有效且直观地区分制品版本的成熟度情况,提高交付效率和安全性,后续将支持自定义制品等级和晋级规则。

在制品晋级的过程中,制品等级越高,越需要支持跨网络/数据中心使用,制品分发将生成的制品快速、准确和可靠地分发出去,供不同地区开发人员或用户使用,为企业提供更为高效和便捷的全球化业务支持。

图9.png

(5)制品部署

制品部署是将软件制品部署到各个环境的过程,制品部署是软件开发的最后一步,也是最关键的一步,如果部署失败,将会导致业务中断或严重故障,保障部署制品版本正确至关重要。 平台目前有支持三种方式部署:构建部署一键运行,制品库选择制品,选择上线工单部署。

(6)制品扫描

制品包含的是在应用程序开发过程中产生的各种文件,从源代码到编译后的二进制文件、测试结果和部署配置文件,甚至到生产环境中使用的数据。一旦这些制品受到攻击或被窃取,会严重影响整个应用程序或系统的安全性和可靠性,安全扫描是制品管理中重要一环,有助于保障系统稳定性和安全性,平台对制品进行全方位的漏洞/合规扫描(包含源代码,依赖,文件,镜像等),提前识别制品安全等级,提前规避问题。这一部分将在3.2中重点介绍。

(7)制品老化

合理制定制品生命周期管理策略,定期清除无效制品,减少存储空间占用,可以提高系统性能,提供更安全、稳定、整洁的制品库。

图10.png

(8)权限控制

制品权限控制是制品管理流程中非常重要的一部分,它可以确保制品在构建、存储、分发和部署等环节中,仅有经过授权的人员才能访问、修改、上传和下载制品。通过制品权限控制,大大降低公司潜在安全风险,防止机密信息和敏感数据的泄漏。

3.3.2 制品安全扫描

(1)制品存在哪些安全风险

制品安全扫描是提前发现和规避这些风险的有效措施,通过制品安全扫描保障应用程序安全,减少安全风险造成的损失,保护公司机密数据。

(2)全方位安全扫描

平台对制品进行全方位安全扫描,从源码→构建→制品→部署全流程进行扫描和管控,保障系统的安全性。

图11.png

以上各种扫描(源码扫描,构建扫描,制品扫描)都会形成扫描报告,扫描结果也会记入制品元数据,作为制品的安全属性和制品晋级准入条件,进行部署管控,用户也可以在制品库查看制品的安全性与扫描报告。部署不安全制品时,线上线下环境会采取不同措施进行干预:

(3)组件准入规则

组件准入规则能够提前规避问题,保障整个应用程序或系统的安全性和可靠性,是软件开发和部署过程中必不可少的一环。组件准入分为二方依赖和三方依赖的准入,下图详细展示了组件准入规则。

图12.png

图中名词解释:

1)依赖包的拉取:本地编译或平台构建需要拉取某个依赖包时,平台依据安全依赖/漏洞知识库判断依赖是否安全,安全的依赖才允许下载;若某个依赖在安全依赖/漏洞知识库中不存在,会从公共仓库拉取进行安全扫描,确定是安全的依赖后才允许下载。

2)二方依赖推送内网中央仓库:本地二方依赖禁止推送,只能通过平台构建生成二方依赖;二方依赖经过安全扫描确定为安全依赖后进入安全依赖知识库并推送到内网中央仓库,不安全依赖记录到漏洞知识库。

(4)依赖正反向溯源

图13.png

上图展示的是制品对应的简易依赖树,以及每个树节点存储的信息。

图14.png

通过制品正反向溯源,确定组件历史版本和演变过程,追踪代码质量、安全性、改变历程等信息,帮助开发人员和系统管理员进行版本控制和漏洞检查,确保组件库中的所有组件都是计划中要使用的版本。

四、总结与展望

制品管理是软件开发和交付过程中不可或缺的环节,vivo CICD的制品管理经过四版的演进,从多品类支持,制品生成、制品晋级、制品部署、制品扫描,制品老化,制品管控等方面完善了制品管理能力,提高了软件研发效率、软件交付质量和可靠性、简化了软件交付流程、降低了运维成本。

目前vivo CICD的制品管理是一个相对完善的制品管理平台,但制品管理作为软件开发和部署过程中重要的组成部分,在未来会走向更加智能化、集成化、安全化和规范化的方向,在制品管理的道路上我们还需不断实践探索:

  1. 智能化方面:随着人工智能的发展,人工智能技术越来越成熟,后续将借助机器学习等技术,智能识别制品安全情况,提供智能分析,智能推荐等功能。

  2. 集成化方面:制品库与DevOps、CICD关系将会越来越紧密,后续将在制品管理中集成CICD能力,例如用户可以在查看某个制品的同时进行一键部署。

  3. 安全化方面:随着软件和网络安全威胁的不断增加,制品库安全扫描的重要性将会日益凸显。为增加安全性能和提高交付效率,进行安全左移,例如将扫描前置到开发过程中。

  4. 规划化方面:引入更多的规范化策略和标准,研究制定更加严谨的制品管理流程,防止因为制品管理的缺失导致安全问题,提高交付效率。

制品管理还需要结合实际场景进行探索和创新,寻求更加智能化、灵活化和安全的实现方式,推动整个软件开发生态的不断发展和进步。

上一篇下一篇

猜你喜欢

热点阅读