为什么要提高软件交付效率与质量

随着国内外信息化产业快速发展,数字化应用已经深入到人们生活的方方面面,软件研发的规模与复杂度也随之迅速扩大。

在此背景下,开发者们不得不频繁更新软件版本,以应对不同细分领域、不同型号终端所需的功能迭代。在这一过程中,开发的繁琐性以及海量制品存储与版本管理,都为研发团队带来了巨大挑战和沉重成本,也影响了创新的速度。

即使在华为,同样的困扰也并不少见。以华为终端业务为例,每一年,终端产品面对着全球上百个国家和地区、数万个软件商用版本和数百万个过程版本的需求交付,其安全合规和高效协同无疑是一个巨大挑战。

例如,需要解决超大文件的跨区稳定传输,传输速度达到300MB/s,同时具备防丢失篡改的能力;在制品量达30PB、数千万版本迭代的庞大规模下,依旧能保障软件的稳定存储与高效获取。因此稳定高效、安全可靠的制品仓库,是软件研发不可或缺的平台。

如何提高软件交付效率与质量

在软件研发中,制品仓库用于存放由源码编译生成的、可运行的二进制文件。作为开发的成果性产物,这些二进制文件可运行于服务器上提供服务,或作为进一步集成的编译依赖参与应用构建。

可以说,整个软件研发作业过程与目标的达成,都基于制品的获取、生产、归档、应用而运作。流畅、高效、可靠的制品仓库,是软件开发工具不可或缺的基础。

当前,不少研发组织依旧使用着较为简易并且粗粒度的制品存储(如搭建FTP或者网盘存储等),缺乏智能的制品管理与防护体系,这也为制品的高效使用、版本可信追溯、开源漏洞治理、跨团队协作等带来严峻的困难与挑战,极大地拖延了研发周期并增大了出错几率。

基于华为三十多年的研发经验和数字化转型实践,华为云总结出建设与运用专业制品仓的三大实践创新。

第一,生命周期管理,保证制品安全可靠

软件开发离不开跨组织的协作,这也必然带来代码制品的复杂管理需求。华为公司对供应商或者开源社区引入的制品,构建了一系列完整的管理流程。

首先,制品选型时会进行下载地址验证、软件包的哈希校验、数字签名验证与恶意软件扫描,验证全部通过才能入库到公司级制品中心仓库,保证制品来源安全可信;

其次,定期对中心仓库进行开源漏洞和恶意软件扫描,下线存在严重漏洞的制品,持续保证制品开源安全可靠。需要在开源软件基础上定制开发等场景,新生成的制品包也要重新进行恶意软件扫描、华为哈希值和数字签名生成;

最后,在集成验证和发布阶段,构建在封闭环境中下载验证华为哈希值,发布时生成《开源及第三方软件来源完整性报告》。

基于对开源和第三方软件产品数据及流程的可信管理,华为落地了开源全生命周期运作的机制,实现开源软件的来源、过程、结果可信,消除和防止开源软件的使用风险。

第二:生产存储可信,让协同开发高效敏捷

首先,制品仓作为二进制文件的存储载体,其重要作用是实现制品文件的可信存储,支撑软件开发活动使用。华为公司内部建设了制品中心仓,让所有研发团队可以按需、在权限范围内存储与获取制品,从而提高协作水平。

此外,制品仓具备制品细粒度的生命周期管理,元数据归档关联等能力,便于进行数据治理的同时实现制品可溯源与跟踪,构建可预测和重复。

第三:高效稳定传输,提供极致性能体验

依托制品仓库中心、卫星节点部署,实现就近下载,和华为对网络架构核心技术的积累,在公司内针对远程代理,聚合下载,多种语言(Maven、PyPI、npm等10+种)等场景突破了异地50MB/s、同地域300MB/s的速度,并且保证传输稳定率到达99.99%。

基于以上三大核心实践,通过持续构建安全可信、稳定高效的制品中心仓,实现制品安全可追溯,能应对软件供应链攻击,支撑华为产品和解决方案在170多个国家和地区持续安全稳定运行,赢得全球企业客户信任。

制品仓库服务全面守护制品质量与安全

华为云CodeArts Artifact服务丰富了常用语言的制品库管理,实现制品开源合规扫描、制品生命周期管理、高效查看和搜索、自定义代理仓库和聚合仓,持续为客户提供全面、高效、可信的制品管理。

提供自研、安全、极致性能的制品仓,保障业务连续性不中断

CodeArts Artifact制品仓库,基于云原生架构自研,解决外界不可控因素导致业务连续性问题。在安全上华为云CodeArts Artifact提供多维度、细粒度的权限控制,支持企业内不同角色对制品仓库访问控制的诉求。制品仓库存储采用物理隔离存储方式,减少恶意盗取制品风险,同时提供记录用户操作功能,保证操作可追溯;在可靠性上华为云CodeArts Artifact支持双AZ容灾和跨地域容灾、API限流与降级、服务依赖和隔离、实现服务故障自探测,实现99.99%的SLA保证;在极致性能上华为云CodeArts Artifact提供热点文件缓存加速,增量上传下载,大小文件充分利用缓存加速优势,极速传输,提升用户构建速度,突破底层存储带宽限制,实现同地域高速并发传输,对比开源同类产品5X倍的上传和10X倍的下载性能提升。

支持开源合规分析和漏洞检测,让高危致命问题无处遁逃

华为云CodeArts Artifact制品仓库提供基于软件包的成分分析能力,通过特征匹配的方式,分析软件包中的开源软件及版本,并通过漏洞库匹配的方式进行开源漏洞排查。实时同步NVD、CNVD、CNNVD等常见漏洞库漏洞数据,覆盖主流编程语言(C/C++、Java、Go、Python、JavaScript等),覆盖语种持续增加,提供全面、直观的风险汇总信息。在服务上线之前能够实时感知开源高危风险防御体系,并且及时修复问题,避免不可估量的损失。

支持10+种仓库类型,充分满足用户各种使用场景

华为云CodeArts Artifact制品仓库支持Generic、Maven、npm、Go、PyPI、RPM、Debian、Conan、Nuget等10+种主流制品仓库类型,满足嵌入式、WEB应用、移动应用等开发场景所需,可以与本地各构建、部署工具和云上的持续集成、持续部署无缝结合。华为云CodeArts Artifact也提供制品和元数据的完整性校验能力,支持细粒度控制和按版本的细粒度包锁定权限,保障发布软件测试完整性,全面看护企业制品安全。

无缝连接第三方仓库,提供统一聚合仓地址,极大提升用户体验和下载性能

针对用户同时使用多个镜像源或制品库的场景,CodeArts Artifact提供仓库聚合能力,允许灵活组合多个代理仓,提供统一制品仓库入口,解决用户找不到制品包的痛点和简化客户配置。

CodeArts Artifact新增自定义代理仓功能,允许用户创建自定义代理仓库来代理开源社区仓库和三方依赖仓库,通过代理仓下载文件后支持将对应文件缓存到制品仓库,解决用户三方依赖下载慢痛点,实现下载三方依赖和本地仓库一样的极致体验。

按文件名和checksum搜索,亿级制品包秒级查询与精准定位

华为云CodeArts Artifact具备强大的搜索能力,依托于华为数据引擎检索能力,支持内部研发近百亿制品文件的多维度的快速搜索。

前覆盖Maven、Npm、Go、PyPI、RPM、Debian、Conan、Nuget多种制品类型,用户可以通过文件名称或HASH信息(MD5、SHA1、SHA256、SHA512等四种类型),实现秒级检索定位。 以此为基础,CodeArts Artifact也演进出上亿级别的元数据和SBOM的高效关联查询,以便对制品文件进行快速溯源,对比开源同类产品搜索性能提升20X倍。

制品仓库常见问题

制品仓库常见问题

  • 如何正确调用Maven私有依赖库的私有组件?

    进入私有依赖库,单击需要私有组件名称,进入文件属性页面。

    获取依赖下载地址,复制后添加至“pom.xml”文件即可。


  • 无法下载依赖的war、jar文件

    问题现象

    本地工具通过私有依赖库无法下载组件,报错为找不到对应的pom文件。

    原因分析

    依赖中缺失对应的pom文件。

    无论是通过gradle还是maven下载依赖,其顺序都为先下载pom文件,然后才是jar或者war,若云端不存在pom文件,则会下载失败。

    处理方法

    建议按照组件上传标准再次重新上传无法下载的组件。


  • 支持本地编译时调用私有依赖库中的软件包吗?

    支持。

    进入依赖包所在的仓库,单击页面右上角三点按钮,在下拉栏中单击“配置指导”下载配置文件,参考弹框中的说明完成配置即可。


  • 私有依赖库回收站中文件无法还原

    问题现象

    在回收站页面上对文件执行还原操作,文件无法还原。

    原因分析

    仓库中的被还原位置上存在一个同名的文件,还原时会跳过该文件。

    处理方法

    仓库中被还原的原位置已存在同名文件,建议忽略该文件的还原操作。若必须还原该文件,需要先将仓库中的同名文件删除。