不同开发语言的源码编译构建打包的二进制文件。
不同开发语言的源码编译构建打包的二进制文件,例如Java JAR,WAR,EAR格式;Android AAR格式;其他软件包格式,例如NuGet软件包,Ruby gems,NPM软件包;Docker镜像和Helm charts;普通ZIP或.tar.gz、dmg等压缩文件;可执行文件格式,例如.exe 或.sh 文件,以及Android APK、Apple IPA等各种安装程序格式。
使用场景上,分为三类:
1. 制品仓库
存放流水线构建的通用文件类型的仓库,以及部署时拉取文件的仓库,如:① Generic——例如普通ZIP或.tar.gz、dmg等压缩文件;② 可执行文件格式,例如.exe 或.sh 文件;③ Android APK、Apple IPA等各种安装程序格式。
2. 镜像仓库
通过k8s 服务部署应用时,需要从镜像仓库拉取镜像,如:① Docker,Docker镜像;② Helm,Helm charts。
3. 依赖仓库
各种开发语言的依赖包管理仓库,通常会搭建nexus私服来通过代理拉取各个中央仓库的开源依赖包,也叫三方包;由企业公共组件开发团队或合作公司提供的依赖包或SDK,也叫二方包。
安全隐患明显:第三方依赖包下载管理混乱,缺乏安全漏洞扫描和安全准入设置,极易引入漏洞,造成生产事故。
制品管理混乱:对不同类型制品缺乏统一管理平台,冗余制品无法及时清理造成资源管理混乱。
无法溯源管理:缺乏对开发、构建、测试和部署等制品全生命周期的过程管控,无法历史溯源。
服务中断风险:缺少高可用时,存在因故障引起服务中断的风险,影响研发和运维工作。
运维成本高昂:缺乏集群部署,存在重复建设的问题,维护成本高,且无法进行多地区节点的制品同步分发。
一个合格的制品库,除了要支持常用的制品类型的存储功能以外,还必须提供仓库代理、版本管理、访问控制、安全扫描、依赖分析、制品同步等重要功能,是一种企业处理软件开发过程中产生的所有包类型的标准化方式。实现对制品全生命周期的流程、风险、权限和质量等多维度管控,支撑企业在开发、构建、测试和部署等阶段对制品的管理和使用,可以大幅提升软件工程的管控与效能。
先进的计算机技术和软件也大多引进国外。包括很多先进的开发理念和核心的基础软件都是来源于美国,DevOps 和制品库也不例外。主流的制品库软件也都来自于国外。随着 DevOps 行业的发展,国内制品库产品也逐步兴起。
FoLi是一款功能强大、纯国产化自主研发的制品管理工具,可国产化替代商业级制品库如JFrog Artifactory、Nexus Repository Manager。
1.开发构建阶段
因技术所需,此阶段往往会“依赖”大量外部的依赖组件,在这个时候既要费时费力下载各种外部依赖文件,还要防止下载的开源组件有漏洞,再加上有些组件可能还有授权大坑,有法律风险,因此,如何处理依赖库就成为了开发构建中的大难题。
2.存入制品库阶段
在构建完之后研发人员往往会将制品存入制品库中进行集中管理,在这个时候会出现以下问题:
开发无法对库里制品的质量状况了如指掌;运维难以确定本次可发布的版本,如果有未经测试的版本上了生产环境,或者是老版本覆盖了新版本,酿成的都是大事故。
3.部署实施阶段
最后交付的制品,在部署实施的时候会有许多要求:
首先要保证传输的介质可靠和安全,还要兼顾版本的管理,哪个版本是最新的? 哪个是临时版本?万一制品库宕机,按时投产就成了大问题。
很多情况下,企业开发和生产处于异地隔离,那么如果制品异地传输慢,大规模部署就只能干着急。还有权限管控方面,如果制品库无法做到细粒度的权限管控,权限管控不严,制品被篡改,那将遗患无穷。
制品库和代码库的区别分别是:
1.制品库:制品库用来统一管理不同格式的软件制品;代码库:代码库就是编译成DLL的程序集,它们提供了一种将代码封装在单个文件中、允许继承和修改这些文件并允许分发离散的功能单元的可移植方法。
2.制品库除了基本的存储功能,还提供了版本控制、访问控制、安全扫描、依赖分析等重要功能,是一种企业处理软件开发过程中产生的所有包类型的标准化方式;代码库可以将来自多个不同项目的组件合并到一个代码库中。例如,可以从一个项目中选择一个自定义控件,从另一个项目中选择一个组件,再从其他项目中选择一个窗体。
是一款功能强大、纯国产化自主研发的制品管理工具,可国产化替代商业级制品库如JFrog Artifactory、Nexus Repository Manager。基于纯底层自研,可处理大型企业中最高可达百亿的全企业软件包依赖级关系,可实现分析、遍历查询等目标,实现分布式、按需横向扩展存储与计算节点。为软件包依赖关系分析、业务元数据管理、版本管理等提供底数据库支持。博云牧品FOLib支持创建多种仓库策略,包括本地仓库、组合仓库、代理仓库功能,彻底解决企业仓库访问及管理复杂性问题。