工欲善其事,必先利其器 ——DevOps中如何管理工具包
一、背景
作為DevOps交付流水線的開發者,為支援CI/CD中各項任務的自動化,都需要依賴多種包管理工具來下載各種相關的工具,比如針對產生最終交付件的構建過程,就需要在構建流程的第一步,自動地把相關工具,如Curl、wget、Maven、Gradle、npm等等,下載到CI伺服器。這些工具的下載,通常都需要依靠對應的公網伺服器和包管理工具來支援。而這樣透過公網來下載工具,有時會遇到穩定性的問題,也就是所謂的環境問題,導致工具下載失敗,進而導致構建任務的失敗。因此,我們需要引入新的技術來克服這些問題,保證工具包下載的穩定和可靠。
二、工具包管理的痛點——缺乏穩定性
通常,我們會使用各種各樣的包管理工具來幫助我們下載和管理這些工具包,如Windows上的Chocolatey,Mac/Linux上的Homebrew,還有npm、Yum、Debian、Docker等等。可是,有時我們透過這些包管理工具來下載工具包時,會碰到意外的5xx伺服器錯誤。而更多的時候,透過這些包管理工具來下載會非常的慢。這些問題在我們使用自動化構建工具(如Travis CI、Jenkins、Gitlab CI,等等)來實現持續整合CI的時候,會被成千上百倍地放大。一種解決辦法就是在碰到這些環境問題時,透過手動執行構建的方式進行補救,當然,這只是指標不治本。同時,在網路訪問有限制的時候,如很多金融企業都會採用的網路隔離,根本不可能去下載這些公網伺服器上的工具包。
三、解決方案——使用JFrog Artifactory的遠端倉庫
JFrog Artifactory作為全語言製品倉庫,其遠端倉庫可以作為公網伺服器的本地代理和快取。當我們透過其遠端倉庫來下載所需的工具包時,Artifactory首先檢查在本地的快取中是否已經存在。如果有,直接返回該工具包;如果沒有,Artifactory將會代理到公網伺服器去下載相應的工具包,並快取到本地,以供後續的下載使用。
利用Artifactory的遠端倉庫作為下載前述工具包的代理和快取,能夠使得DevOps流程中的各個環節,如前面描述的持續整合流程,更加的迅速和穩定。在有網路隔離要求的環境中,如金融企業的研發/生產環境,Artifactory可以幫助技術人員建立自己的企業級單一可信源。
下面,我們將透過示例為大家一一展示,Artifactory的遠端倉庫是如何為不同種類的工具包提供服務的。
四、示例一——Chocolatey
當使用Choco為Windows系統下載Gradle的時候,我們經常會碰到類似下面這樣的503錯誤,從而導致構建失敗:
解決的方法:我們在Artifactory裡定義一個Nuget型別的遠端倉庫,利用它作為透過Choco包管理工具下載的來源。
第一步:配置Artifactory遠端倉庫
在Artifactory裡建立一個Nuget型別的遠端倉庫,其主要引數如下:
· 倉庫名:choco
第二步:安裝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>
五、示例二——Homebrew
和Chocolatey類似,也可以用Artifactory來支援Brew的下載:
第一步:配置Artifactory遠端倉庫
在Artifactory裡建立通用(Generic)型別的遠端倉庫:
· 倉庫名:homebrew
第二步:設定“HOMEBREW_ARTIFACT_DOMAIN”環境變數
· 匿名訪問:
set HOMEBREW_ARTIFACT_DOMAIN=<artifactory-url>/homebrew
· 帶使用者認證的訪問:
set HOMEBREW_ARTIFACT_DOMAIN=<artifactory-user>:<artifactory-password>@<artifactory-url>/homebrew
第三步:安裝
之後再透過 brew install命令安裝,就會訪問Artifactory的本地快取了。
六、示例三——Yum
本節將介紹如何利用Artifactory的遠端倉庫來使用Yum下載RPM包。
第一步:配置Artifactory遠端倉庫
在Artifactory裡建立一個RPM型別的遠端倉庫:
· 倉庫名:yum
· Url:
o 例如:
第二步:建立yum的配置
建立下述檔案:/etc/yum.repos.d/artifactory
· 匿名訪問時,檔案內容為:
[artifactory]HERE
name=artifactory
baseurl=
enabled=1
gpgcheck=0
· 帶使用者認證時,檔案內容為:
[artifactory]
name=artifactory
baseurl=
enabled=1
gpgcheck=0
之後正常使用yum命令就可以從Artifactory的本地快取下載RPM包了。
七、示例四——Docker
本節將介紹如何利用Docker命令從Artifactory的遠端倉庫來下載Docker映象。
第一步:配置Artifactory遠端倉庫
在Artifactory裡建立Docker型別的遠端倉庫:
· 倉庫名:docker
第二步:登入
用下述命令登入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,),來管理自己的Docker映象。
八、總結
在DevOps流程當中,我們需要下載很多工具包,來支援整個流程的自動化運轉。然而。直接從外網下載這些工具包,經常會碰到環境問題,進而影響整個DevOps流程的效率和可靠性。
Artifactory透過其遠端倉庫的設定和全語言製品支援的能力,能夠幫助我們建立各種工具包的本地源,從而使得DevOps的流程更加迅速和穩定。本文還列出了幾種典型型別工具包的配置方法。
更多精彩內容可以專注我們的線上課堂
微信搜尋公眾號:jfrogchina 獲取課程通知
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69954434/viewspace-2683928/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 工欲善其事必先利其器-GitGit
- 老白學 Java - 工欲善其事,必先利其器Java
- 前端學習【工具篇】——工欲善其事,必先利其器前端
- 工欲善其事,必先利其器 -- Mac 軟體推薦(序)Mac
- 工欲善其事必先利其器:用什麼寫Python?Python
- 工欲善其事,必先利其器,分享5款Windows效率軟體Windows
- 工欲善其事必先利其器-前端實習簡歷篇前端
- 工欲善其事必先利其器 : 遊戲 AI 環境對比遊戲AI
- 你也許不知道的Vuejs - 工欲善其事必先利其器VueJS
- 工欲善其事,必先利其器之—MAC下搭建clojure的開發環境Mac開發環境
- Web 前置知識——工欲善其事,必先利其器:軟體安裝、環境搭建Web
- 牆裂推薦:工欲善其事必先利其器(實際開發中高頻使用)
- 各角色如何從DevOps中受益?dev
- 華為敏捷DevOps實踐:如何從Excle管理軟體的方式中走出來敏捷dev
- 如何使用 SDKMAN管理 Linux 系統上的Java 開發工具包LinuxJava
- DevOps後設資料管理dev
- AWK :Linux 管理員的智慧工具包Linux
- DevOps 團隊的漏洞管理指南dev
- 如何與 DevOps 為伍?dev
- 如何推進DevOps轉型?dev
- DevOps已死?2024年的DevOps將如何發展dev
- 初創公司如何做DevOpsdev
- 如何應用雲架構DevOps?架構dev
- 如何打造易用的DevOps工具鏈dev
- DevOps 中的測試實踐dev
- DevOps中的測試實踐dev
- 軟體開發中的DevOpsdev
- 如何理性看待國內大熱的HuTool工具包
- 如何在 Linux 中管理日誌Linux
- 如何在macOS中管理家長控制?Mac
- React中如何使用Redux管理資料ReactRedux
- openGauss中如何管理表空間
- DevOps|研發效能價值如何衡量dev
- ChatGPT如何助力DevOps|用例解讀ChatGPTdev
- 【DevOps&SRE活動實錄】經驗+案例,教你如何打造易用DevOps工具鏈!dev
- CODING DevOps 系列第四課:DevOps 中的質量內建實踐dev
- Devops 開發運維高階篇之容器管理dev運維
- 如何在 Ubuntu 中管理和使用邏輯卷管理 LVMUbuntuLVM