什么是制品?#
制品是指由源码编译打包生成的二进制文件,不同的开发语言对应着不同格式的二进制文件;这些二进制文件通常用于运行在服务器上或者作为编译依赖,“制品的管理”是配置管理的重要组成部分。
通常,这些组件是各种文件的存档,包括:类文件中的Java字节码、C对象文件、文本文件、二进制文件。组件的多种格式,例如:Java JAR,WAR,EAR格式;普通ZIP或.tar.gz文件;其他软件包格式,例如NuGet软件包,Ruby gems,NPM软件包;可执行文件格式,例如.exe 或.sh 文件,Android APK文件,各种安装程序格式。
按照使用场景,制品大致分为三类
- 外部引入的第三方组件
- 产品内部依赖包,公共SDK
- 产品交付安装包
- Generic File 指的是通用文件类型的制品。
- Docker
- Maven
- npm
- PyPI
- Helm
- Composer
- NuGet
- Conan
为什么要制品管理?#
- 外部依赖下载慢
- 影响研发构建速度
- 版本管理混乱 (svn,ftp)
- 交付包使用FTP或者SVN进行管理,管理粒度相对较粗;在这种粗放式的制品管理方式下,不同类型包的存储与获取是一件头疼的事情,版本追踪极其混乱,团队协作也是障碍重重。
- 由于受到监管约束,一键部署是不可能任务,跨网段的包交付智能依赖于手工拷贝
- 安全漏洞风险
- 依赖组件越多,引入漏洞的风险也越高
- 第三方依赖包下载管理混乱,没有准入管控
- 漏洞藏的越深,修复漏洞所花费的时间就越长
- 制品存储风险
- 团队内部搭建的制品库是单点的,缺乏集群部署
- 资源浪费
- 因为没有统一的制品库,存在重复建设的问题;维护成本高,或者说目前根本就没有维护

制品管理是DevOps流程中不可或缺的一部分,它涉及到构建产物的存储、版本控制、安全性和流转。制品包括各种格式的二进制文件,如Java的JAR、WAR,Docker镜像等。制品管理工具如Nexus、Jfrog Artifactory和Harbor提供统一的管理平台,解决版本混乱、依赖安全和效率问题。制品管理涉及规范命名、权限控制,同时需关注开源组件的安全风险,如SBOM用于跟踪软件组件。良好的制品管理能提升研发效率,确保安全,并促进团队协作。



最低0.47元/天 解锁文章
25

被折叠的 条评论
为什么被折叠?



