制品仓库的artifactory的介绍和部署

1.artifactory的介绍

此部分转载于:https://blog.csdn.net/afandaafandaafanda/article/details/81735013

Jfrog(这是公司名)的Artifactory是一款Maven仓库服务端软件,可以用来在内网搭建maven仓库,供公司内部公共库的上传和发布,以提高公共代码使用的便利性。

它也是目前全球唯一一个支持所有开发语言,任意维度的元数据检索、跨语言正反向依赖分析,并同时拥有深度递归、支持多活异地灾备的企业级、高可用二进制制品管理仓库。世界五百强中93%的企业已经将Artifactory作为自己DevOps的核心系统。

 JFrog Artifactory 核心能力:

 

 

1.Artifactory 仓库类型

Artifactory 仓库主要有四种类型,远程仓库、本地仓库、虚拟仓库及分发仓库,分别应用在如下不同的场景。

远程仓库
Artifactory 仓库支持代理公网或内网二进制软件制品仓库(Artifactory, Nexus,Harbor等),按需获取后在本地进行缓存,可大幅度提升构建效率。

本地仓库
Artifactory 本地仓库用来存储本地构建产出的软件制品。本地仓库中的软件制品通常都带有丰富的元数据,并且通过基于角色的访问控制(RBAC)实现资源隔离。

虚拟仓库
为满足制品管理的多团队协作需求,虚拟仓库通过打包任意数量的远程仓库和本地仓库,暴露唯一的访问入口的方式,将制品提供者和消费者之间的耦合度降到最低,提升协作效率。

分发仓库
分发仓库通过JFrog Bintray SaaS服务满足软件制品公网分发的需求,提供默认的全球CDN加速服务。

2.Artifactory 元数据应用场景

1.企业软件制品资产管理

软件制品天然具有高度复用性的属性,在进行新项目开发的初始阶段,都会考虑充分使用已有的软件研发成果。随着软件资产的规模快速增长、时间的流逝及管理人员变换,软件制品的元数据变得越来越不可追溯,导致大量软件资产不可重用。

元数据管理通过给二进制制品加标签的方式,记录软件制品产生的需求、测试类型及结果、开源协议、性能表现、设计及API文档等关键数据,确保软件制品资产属性的完整性,并且保证在制品分发、升级过程中,元数据不会丢失,从而最大限度地提升软件资产复用程度。

2.软件发布流程管控

软件交付涉及的环节、人员众多,每个角色和阶段都会对制品进行相应的测试,测试结果往往存放在测试工具或相关负责人手中。在进入下一个阶段时,需要确认之前各阶段是否按照既定的标准完成相应的任务。尤其是在外包团队交付软件最终构建包给企业内部的时候,这种问题变得更加突出,反复沟通的场景在所难免。

如果把每个阶段执行的任务和结果都作为元数据记录在软件制品上,然后在各个交付阶段之间设置准入关卡,就可以通过系统自动化的方式解决各个阶段准入准出的合规性问题,从而降低大量的沟通成本,并且对于交付过程有很好的可追溯性,比如哪个阶段最耗时,哪个阶段经常容易出问题以及交付质量的变化趋势。

3.Artifactory 依赖解析

传统制品仓库无法管理构建过程,因此对构建过程中的依赖也无法统一管理,但架构师、安全负责人对于制品依赖必须有清晰的了解。开发人员经常要确认自己开发的内容是否被正确打包并部署到测试环境中,这时候也需要对二进制制品的所有内容有一个清晰的视图。

Artifactory 将构建任务、构建历史及依赖信息有条理地管理起来,方便架构师在微服务拆分时,对正反向依赖进行追踪,安全负责人清晰地了解安全威胁传递的路径、影响范围(项目、团队、产品)等信息,为管理人员提供深度的洞察力。

4.高可用架构

Artifactory 支持多活节点模式部署,通过负载均衡提供服务,后端通过共享存储和数据库保证数据一致性。对于本地存储、NFS和S3存储都有很好的支持,数据库可选择常用的Mysql, MSSQL及Oracle,理想情况下并发可以打满网卡流量。

5.多数据中心分发

Artifactory 支持在跨地多数据中心之间分发二进制制品,于此同时,还默认提供元数据、统计信息(下载量等)的同步分发,有效提升多研发中心之间协同能力。比如,著名汽车品牌奔驰通过分发能力,解决了在印度、北美、德国不同国家之间的构建依赖传输效率问题。

 

 

 

2.什么是maven仓库

讲到maven仓库,我们这里会有一个疑问,就是还有一个服务端软件nexus也是被称为maven仓库,那么他们到底谁是maven仓库呢。其实讲到这个问题我们要先介绍一下到底maven仓库的定义是。

Maven仓库是基于简单文件系统存储的,集中化管理Java API资源(构件)的一个服务。仓库中的任何一个构件都有其唯一的坐标,根据这个坐标可以定义其在仓库中的唯一存储路径,通过这个坐标所有Maven项目可以从同一个Maven仓库中获取自己所需要的依赖JAR或者其他格式的构件

通过上面定义我们可以看出nexus和artifactory都是maven仓库,不过在平时生产中,一般nexus被用来做maven仓库的比重大点,artifactory用做制品仓库的比重大点。所以一般nexus也叫私服,讲到私服就会想到nexus,讲到制品仓库就会想到artifactory。那他们又什么区别呢

 

3.什么是制品仓库

即构建过程的输出物,包括软件包,测试报告,应用配置文件等可在服务器上直接 运行或可查看二进制形式的文件,通常称之为二进制软件制品。不同开发语言 所产生的制品的获取、使用、共享方式不同,不同的制品仓库能够管理各自开发语言类型的二进制制品。制品管理是对软件研发过程中生成的产物的管理, 一般作为最终交付物完成发布和交付。所有的制品包,依赖组件均能够纳入统一 制品库中统一管理。制品库应作为测试及生产部署的唯一可信制品来源。

4.nexus和artifactory的区别

a. Artifactory是目前国内唯一提供原厂技术支持的企业级全语言制品管理解决方案,具有原生高可用以及热容灾备份功能,专门针对大型企业设计。而Nexus不具备相应功能,会大大提高技术人员的学习成本,以及企业的用人成本;

b. Artifactory提供元数据功能,可以真正意义上将开发运维通过制品端到端的联系起来,需求、代码提交、各项测试结果、审批流程、构建过程以及部署过程都能一目了然的显示,彻底打破了信息烟囱化的问题,而Nexus不具备此项功能;

c. Artifactory所有功能都提供Rest API,全接口方便封装,能结合用户的不同需求进行二次开发,从而打造最贴合用户行为习惯的制品管理工具,而Nexus接口不全面;

d. Artifactory包含Xray组件,能够扫描第三方组件安全漏洞,并且能够从影响范围和影响深度两个维度快速定位安全风险,大大提高企业软件开发安全性,而Nexus不具备此功能。

e. Artifactory能够管理任何形式的二进制文件,以及相关联的非二进制文件,并提供完备的访问方式和本地仓库,而Nexus此项功能不全面。

 

posted @ 2020-07-09 10:52  清白之年980410  阅读(14149)  评论(0编辑  收藏  举报