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此項功能不全面。