Azure DevOps (九) 通過流水線推送映象到Registry

Tassdar發表於2022-04-06

上一篇文章我們研究瞭如何通過流水線編譯出一個docker的映象,本篇我們來研究一下,如何把編譯好的映象推送到映象倉庫去。

平時如果我們是單機部署,我們的docker本身就裝在部署的機器上,我們在本機直接build+run一條龍就好了,但是在實際生產中,

更多的可能是分散式的多機部署,或者我們是依賴於K8S進行的部署,這時候我們肯定是需要把編譯好的映象推送到一個統一的倉庫

中進行管理,然後在部署的時候統一從這個倉庫進行獲取。

映象倉庫目前社群主流的是使用Harbor,這個是是VMware貢獻給社群的一個開源免費的映象倉庫,有一鍵部署的指令碼,部署成功後通過

對外開放的API既可以實現映象的推送和拉取,我在寫這篇文章的時候自己搭建了一個Harbor打算用來當倉庫用,後來想了想好像各個

雲廠商都有免費的倉庫可以用,於是乎我就去搞了一個騰訊雲的倉庫,這樣也免去了大家搭建harbor的工作量和所需的硬體伺服器資源

(注意,我這裡不是廣告,阿里雲、騰訊雲、華為雲、青雲等都有自己的倉庫,只是我自己的伺服器都在騰訊上)

首先,我們去騰訊雲搜尋:容器映象服務,然後開通個人版,個人版是免費的,只是受限的條件很多,但是夠用,開通之後,我們進入

到控制檯,點選新建倉庫,填寫好自己的配置資訊之後就可以使用了,成品如下:

 

 如果喜歡使用harbor的話也沒有問題,harbor的效果如下:

 

 配置好映象倉庫之後,我們去更改一下上一篇文章中我們建立好的流水線,之前的流水線中,我們只是執行了docker build 命令,這個命令只是實現了映象

的編譯工作,接下來我們需要新增docker push命令,來把我們的映象推送到倉庫裡去。

首先和之前建立ssh連線一樣,我們需要在service connection中新增一個憑證,用來描述我們的倉庫地址和賬號密碼,開啟service connection選擇docekr registry

新增你的倉庫資訊,如果你使用的是騰訊雲的倉庫,賬號密碼會在你建立倉庫時進行設定,如果你使用的是harbor,那麼這個賬號和密碼是寫在你harbor的配置檔案

裡的,和你請求api的賬號密碼保持一致即可。

 

 

 

填寫完之後,我們去更改一下之前的流水線,首先我們先在repository 中選擇我們剛才建立好的連線資訊,然後修改下面docker build為docker build push,其他的原有引數不需要調整

然後我們執行一下我們的流水線,我們可以看到,流水線在完成了build步驟以後,緊接著就開始執行了push命令,開始推送我們的映象到騰訊雲的倉庫。

 

 然後我們去騰訊雲上,看一下我們的映象有沒有出現,可以發現,我們剛才推送的映象現在已經躺在騰訊雲上了。

 

 

如果你使用的是harbor的話,首先需要確保你部署harbor使用的是https,因為docker在push的時候預設是執行https的,其次就是,在請求的時候不需要帶埠號,可能是我

安裝的不太好的原因,我的harbor生成的命令裡帶著埠號,讓我爬了很久的坑。和騰訊雲一樣,我們需要建立一個新的service_connection,裡面儲存harbor的資訊,

地址填寫你部署harbor的域名或者ip就可以,但是必須是https的,不然後面會走不通。

 

 

 然後我們去更新一下我們流水線的配置,把騰訊雲的換成harbor的配置,同時需要更改下面的repostory資訊,更換成harbor的,例如我在harbor上建立的倉庫的名稱是:azure

所以我們這裡就要寫「倉庫名」/『映象名』,例如:azure/my-devops,到時候推送的時候docker會通過tag命令把編譯好的映象命名為:azure/my-devops:tag的格式,推送到你

的harbor倉庫裡去。

 

 然後我們執行一下流水線,看一下生成的命令是否和我們的想法匹配,可以看到和我們預期的是一致的,流水線開始推送映象到我們的倉庫裡去。

 

 然後我們去harbor裡看一下映象是否已經成功推送

 

 

 

到這裡我們本篇文章就結束了,這裡我們成功實現了推送映象到其他的公網倉庫去,接下來我們會繼續研究azure的其他功能。

相關文章