溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

工欲善其事,必先利其器 ——DevOps中如何管理工具包

發(fā)布時間:2020-08-19 06:12:38 來源:ITPUB博客 閱讀:327 作者:JFrog杰蛙科技 欄目:開發(fā)技術(shù)
一、背景
作為DevOps交付流水線的開發(fā)者,為支持CI/CD中各項任務(wù)的自動化,都需要依賴多種包管理工具來下載各種相關(guān)的工具,比如針對產(chǎn)生最終交付件的構(gòu)建過程,就需要在構(gòu)建流程的第一步,自動地把相關(guān)工具,如Curl、wget、Maven、Gradle、npm等等,下載到CI服務(wù)器。這些工具的下載,通常都需要依靠對應(yīng)的公網(wǎng)服務(wù)器和包管理工具來支持。而這樣通過公網(wǎng)來下載工具,有時會遇到穩(wěn)定性的問題,也就是所謂的環(huán)境問題,導(dǎo)致工具下載失敗,進(jìn)而導(dǎo)致構(gòu)建任務(wù)的失敗。因此,我們需要引入新的技術(shù)來克服這些問題,保證工具包下載的穩(wěn)定和可靠。

二、工具包管理的痛點——缺乏穩(wěn)定性

通常,我們會使用各種各樣的包管理工具來幫助我們下載和管理這些工具包,如Windows上的Chocolatey,Mac/Linux上的Homebrew,還有npm、Yum、Debian、Docker等等。可是,有時我們通過這些包管理工具來下載工具包時,會碰到意外的5xx服務(wù)器錯誤。而更多的時候,通過這些包管理工具來下載會非常的慢。這些問題在我們使用自動化構(gòu)建工具(如Travis CI、Jenkins、Gitlab CI,等等)來實現(xiàn)持續(xù)集成CI的時候,會被成千上百倍地放大。一種解決辦法就是在碰到這些環(huán)境問題時,通過手動運行構(gòu)建的方式進(jìn)行補救,當(dāng)然,這只是指標(biāo)不治本。同時,在網(wǎng)絡(luò)訪問有限制的時候,如很多金融企業(yè)都會采用的網(wǎng)絡(luò)隔離,根本不可能去下載這些公網(wǎng)服務(wù)器上的工具包。

三、解決方案——使用JFrog Artifactory的遠(yuǎn)程倉庫

JFrog Artifactory作為全語言制品倉庫,其遠(yuǎn)程倉庫可以作為公網(wǎng)服務(wù)器的本地代理和緩存。當(dāng)我們通過其遠(yuǎn)程倉庫來下載所需的工具包時,Artifactory首先檢查在本地的緩存中是否已經(jīng)存在。如果有,直接返回該工具包;如果沒有,Artifactory將會代理到公網(wǎng)服務(wù)器去下載相應(yīng)的工具包,并緩存到本地,以供后續(xù)的下載使用。
利用Artifactory的遠(yuǎn)程倉庫作為下載前述工具包的代理和緩存,能夠使得DevOps流程中的各個環(huán)節(jié),如前面描述的持續(xù)集成流程,更加的迅速和穩(wěn)定。在有網(wǎng)絡(luò)隔離要求的環(huán)境中,如金融企業(yè)的研發(fā)/生產(chǎn)環(huán)境,Artifactory可以幫助技術(shù)人員建立自己的企業(yè)級單一可信源。
下面,我們將通過示例為大家一一展示,Artifactory的遠(yuǎn)程倉庫是如何為不同種類的工具包提供服務(wù)的。

四、示例一——Chocolatey

當(dāng)使用Choco為Windows系統(tǒng)下載Gradle的時候,我們經(jīng)常會碰到類似下面這樣的503錯誤,從而導(dǎo)致構(gòu)建失敗:

解決的方法:我們在Artifactory里定義一個Nuget類型的遠(yuǎn)程倉庫,利用它作為通過Choco包管理工具下載的來源。
第一步:配置Artifactory遠(yuǎn)程倉庫
在Artifactory里創(chuàng)建一個Nuget類型的遠(yuǎn)程倉庫,其主要參數(shù)如下:
· 倉庫名:choco
· Url: https://chocolatey.org
第二步:安裝Choco包
· 用匿名安裝的命令
choco install <package-name> -s <artifactory-url>/api/nuget/choco
· 使用帶用戶認(rèn)證的方式
choco install <package-name> -s <artifactory-url>/api/nuget/choco
-u <artifactory-user> -p <artifactory-password>

五、示例二——Homebrew

和Chocolatey類似,也可以用Artifactory來支持Brew的下載:
第一步:配置Artifactory遠(yuǎn)程倉庫
在Artifactory里創(chuàng)建通用(Generic)類型的遠(yuǎn)程倉庫:
· 倉庫名:homebrew
· Url: https://homebrew.bintray.com
第二步:設(shè)置“HOMEBREW_ARTIFACT_DOMAIN”環(huán)境變量
· 匿名訪問:
set HOMEBREW_ARTIFACT_DOMAIN=<artifactory-url>/homebrew
· 帶用戶認(rèn)證的訪問:
set HOMEBREW_ARTIFACT_DOMAIN=<artifactory-user>:<artifactory-password>@<artifactory-url>/homebrew
第三步:安裝
之后再通過  brew install命令安裝,就會訪問Artifactory的本地緩存了。

六、示例三——Yum

本節(jié)將介紹如何利用Artifactory的遠(yuǎn)程倉庫來使用Yum下載RPM包。
第一步:配置Artifactory遠(yuǎn)程倉庫
在Artifactory里創(chuàng)建一個RPM類型的遠(yuǎn)程倉庫:
· 倉庫名:yum
· Url:http://mirror.centos.org/centos/<version>/os/<architecture>
o 例如:http://mirror.centos.org/centos/7.6.1810/os/x86_64
第二步:創(chuàng)建yum的配置
創(chuàng)建下述文件:/etc/yum.repos.d/artifactory
· 匿名訪問時,文件內(nèi)容為:
[artifactory]HERE name=artifactory
baseurl=https://<artifactory-url>/yum
enabled=1 gpgcheck=0
· 帶用戶認(rèn)證時,文件內(nèi)容為:
[artifactory] name=artifactory
baseurl=https://<artifactory-user:<artifactory-password>@<artifactory-url>/yum
enabled=1 gpgcheck=0
之后正常使用yum命令就可以從Artifactory的本地緩存下載RPM包了。

七、示例四——Docker

本節(jié)將介紹如何利用Docker命令從Artifactory的遠(yuǎn)程倉庫來下載Docker鏡像。
第一步:配置Artifactory遠(yuǎn)程倉庫
在Artifactory里創(chuàng)建Docker類型的遠(yuǎn)程倉庫:
· 倉庫名:docker
· Url: https://registry-1.docker.io/
第二步:登錄
用下述命令登錄Artifactory的Docker倉庫:
Docker login <your docker domain>
其中<your docker domain>的寫法可以參考Artifactory中docker倉庫對應(yīng)的”Set Me Up”顯示的設(shè)置。
第三步,拉取鏡像
執(zhí)行下述命令,從Artifactory的緩存拉取Docker鏡像:
docker pull <your docker domain>/<docker image>:<docker tag>
當(dāng)然,針對Docker應(yīng)用,你可以使用JFrog提供的免費版鏡像中心——JCR(JFrog Container Registry,https://jfrog.com/container-registry/),來管理自己的Docker鏡像。

八、總結(jié)

在DevOps流程當(dāng)中,我們需要下載很多工具包,來支持整個流程的自動化運轉(zhuǎn)。然而。直接從外網(wǎng)下載這些工具包,經(jīng)常會碰到環(huán)境問題,進(jìn)而影響整個DevOps流程的效率和可靠性。
Artifactory通過其遠(yuǎn)程倉庫的設(shè)置和全語言制品支持的能力,能夠幫助我們建立各種工具包的本地源,從而使得DevOps的流程更加迅速和穩(wěn)定。本文還列出了幾種典型類型工具包的配置方法。
更多精彩內(nèi)容可以專注我們的在線課堂
微信搜索公眾號:jfrogchina 獲取課程通知
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI