做爲DevOps交付流水線的開發者,爲支持CI/CD中各項任務的自動化,都須要依賴多種包管理工具來下載各類相關的工具,好比針對產生最終交付件的構建過程,就須要在構建流程的第一步,自動地把相關工具,如Curl、wget、Maven、Gradle、npm等等,下載到CI服務器。這些工具的下載,一般都須要依靠對應的公網服務器和包管理工具來支持。而這樣經過公網來下載工具,有時會遇到穩定性的問題,也就是所謂的環境問題,致使工具下載失敗,進而致使構建任務的失敗。所以,咱們須要引入新的技術來克服這些問題,保證工具包下載的穩定和可靠。docker
一般,咱們會使用各類各樣的包管理工具來幫助咱們下載和管理這些工具包,如Windows上的Chocolatey,Mac/Linux上的Homebrew,還有npm、Yum、Debian、Docker等等。但是,有時咱們經過這些包管理工具來下載工具包時,會碰到意外的5xx服務器錯誤。而更多的時候,經過這些包管理工具來下載會很是的慢。這些問題在咱們使用自動化構建工具(如Travis CI、Jenkins、Gitlab CI,等等)來實現持續集成CI的時候,會被成千上百倍地放大。一種解決辦法就是在碰到這些環境問題時,經過手動運行構建的方式進行補救,固然,這只是指標不治本。同時,在網絡訪問有限制的時候,如不少金融企業都會採用的網絡隔離,根本不可能去下載這些公網服務器上的工具包。npm
JFrog Artifactory做爲全語言製品倉庫,其遠程倉庫能夠做爲公網服務器的本地代理和緩存。當咱們經過其遠程倉庫來下載所需的工具包時,Artifactory首先檢查在本地的緩存中是否已經存在。若是有,直接返回該工具包;若是沒有,Artifactory將會代理到公網服務器去下載相應的工具包,並緩存到本地,以供後續的下載使用。
利用Artifactory的遠程倉庫做爲下載前述工具包的代理和緩存,可以使得DevOps流程中的各個環節,如前面描述的持續集成流程,更加的迅速和穩定。在有網絡隔離要求的環境中,如金融企業的研發/生產環境,Artifactory能夠幫助技術人員創建本身的企業級單一可信源。
下面,咱們將經過示例爲你們一一展現,Artifactory的遠程倉庫是如何爲不一樣種類的工具包提供服務的。centos
當使用Choco爲Windows系統下載Gradle的時候,咱們常常會碰到相似下面這樣的503錯誤,從而致使構建失敗:api
解決的方法:咱們在Artifactory裏定義一個Nuget類型的遠程倉庫,利用它做爲經過Choco包管理工具下載的來源。
第一步:配置Artifactory遠程倉庫
在Artifactory裏建立一個Nuget類型的遠程倉庫,其主要參數以下:
· 倉庫名:choco
· Url:https://chocolatey.org
第二步:安裝Choco包
· 用匿名安裝的命令
choco install <package-name> -s <artifactory-url>/api/nuget/choco
· 使用帶用戶認證的方式
choco install <package-name> -s <artifactory-url>/api/nuget/choco
-u <artifactory-user> -p <artifactory-password>緩存
和Chocolatey相似,也能夠用Artifactory來支持Brew的下載:
第一步:配置Artifactory遠程倉庫
在Artifactory裏建立通用(Generic)類型的遠程倉庫:
· 倉庫名:homebrew
· Url:https://homebrew.bintray.com
第二步:設置「HOMEBREW_ARTIFACT_DOMAIN」環境變量
· 匿名訪問:
set HOMEBREW_ARTIFACT_DOMAIN=<artifactory-url>/homebrew
· 帶用戶認證的訪問:
set HOMEBREW_ARTIFACT_DOMAIN=<artifactory-user>:<artifactory-password>@<artifactory-url>/homebrew
第三步:安裝
以後再經過 brew install命令安裝,就會訪問Artifactory的本地緩存了。服務器
本節將介紹如何利用Artifactory的遠程倉庫來使用Yum下載RPM包。
第一步:配置Artifactory遠程倉庫
在Artifactory裏建立一個RPM類型的遠程倉庫:
· 倉庫名:yum
· Url:http://mirror.centos.org/centos/<version>/os/<architecture>;
o 例如:http://mirror.centos.org/centos/7.6.1810/os/x86_64
第二步:建立yum的配置
建立下述文件:/etc/yum.repos.d/artifactory
· 匿名訪問時,文件內容爲:
[artifactory]HERE name=artifactory
baseurl=https://<artifactory-url>/yum
enabled=1 gpgcheck=0
· 帶用戶認證時,文件內容爲:
[artifactory] name=artifactorybr/>baseurl=https://<artifactory-user:<artifactory-password>@<artifactory-url>/yum
enabled=1 gpgcheck=0
以後正常使用yum命令就能夠從Artifactory的本地緩存下載RPM包了。微信
本節將介紹如何利用Docker命令從Artifactory的遠程倉庫來下載Docker鏡像。
第一步:配置Artifactory遠程倉庫
在Artifactory裏建立Docker類型的遠程倉庫:
· 倉庫名:docker
· Url:https://registry-1.docker.io/
第二步:登陸
用下述命令登陸Artifactory的Docker倉庫:
Docker login <your docker domain>
其中<your docker domain>的寫法能夠參考Artifactory中docker倉庫對應的」Set Me Up」顯示的設置。
第三步,拉取鏡像
執行下述命令,從Artifactory的緩存拉取Docker鏡像:
docker pull <your docker domain>/<docker image>:<docker tag>
固然,針對Docker應用,你可使用JFrog提供的免費版鏡像中心——JCR(JFrog Container Registry,https://jfrog.com/container-registry/),來管理本身的Docker鏡像。網絡
在DevOps流程當中,咱們須要下載不少工具包,來支持整個流程的自動化運轉。然而。直接從外網下載這些工具包,常常會碰到環境問題,進而影響整個DevOps流程的效率和可靠性。
Artifactory經過其遠程倉庫的設置和全語言製品支持的能力,可以幫助咱們創建各類工具包的本地源,從而使得DevOps的流程更加迅速和穩定。本文還列出了幾種典型類型工具包的配置方法。dom
更多精彩內容能夠專一咱們的在線課堂
微信搜索公衆號:jfrogchina 獲取課程通知
ide