往期內容連接
個人博客即將同步至騰訊雲+社區,邀請你們一同入駐:
https://cloud.tencent.com/developer/support-plan?invite_code=1uzymsc0hstza
Tencent Hub是騰訊出品的DevOps服務。主要提供多存儲格式的版本管理,支持Docker Image、Binary、Helm Charts 等多種類型文件。同時提供 DevOps 工做流的編排引擎,而且支持編排 DevOps 工做流,以打造更強的持續集成與持續交付力,加快軟件迭代發佈速度。html
相比Azure DevOps,Tencent Hub主要面對國內開發者,所以在CI這塊,更容易水土相符。git
在開始以前,咱們先得開通Tencent Hub 服務。這些前置條件咱們就再也不贅述了。github
在本篇教程中,咱們使用Tencent Hub工做流來自動拉取代碼而且構建、推送鏡像到容器服務鏡像倉庫,而且經過鏡像觸發器來自動觸發服務更新。web
使用Tencent Hub的話,整個配置過程比較簡單,主體配置流程以下所示:docker
在開始以前,咱們須要在Tencent Hub上建立一個項目倉庫,以下圖所示:運維
建立完成後如圖所示:gitlab
至此,項目倉庫建立完成。post
注意:Tencent Hub項目倉庫實質上是一個鏡像倉庫,能夠存放咱們構建的docker鏡像。測試
倉庫建立完畢,接下來咱們須要進行代碼庫受權,以便工做流可以獲取代碼以及自動觸發構建。首先,咱們先點擊設置界面,打開以下所示的界面:ui
如圖所示,代碼庫受權支持github、gitlab、碼雲和工蜂,這裏筆者選擇了碼雲,用於演示。
雖然咱們已經建立Tencent Hub的鏡像倉庫,可是爲了方便,筆者建議你們還建立騰訊雲容器服務的鏡像倉庫,以便使用默認的觸發器來觸發服務更新。相比使用工做流來實現,更加穩定和易於維護。騰訊雲容器服務鏡像倉庫界面以下所示:
建立以後,咱們就能夠得到完整的鏡像倉庫地址,以下圖所示:
剛纔,咱們已經建立了Tencent Hub項目倉庫了,首先咱們須要點擊項目名稱進入詳細界面:
而後點擊【工做流】選項卡打開工做流界面:
點擊【新建】按鈕,咱們能夠建立本身的工做流。
Tencent hub提供了不少工做流組件,基本上可以知足咱們的須要,以下圖所示:
接下來,咱們一塊兒來建立一個簡單的工做流,主要包括如下步驟:
在Tencent Hub上,工做流設計界面以下所示:
首先,建立工做流時,咱們須要進行以下所示的設置:
這裏,咱們勾選develop和master分支推送時觸發工做流。
這裏,咱們須要藉助工做流組件 hub.tencentyun.com/tencenthub/thub_docker_builder 來完成進行過構建。
這裏,咱們經過YAML文件來查看具體的配置參考:
組件參數說明以下所示:
Tencent Hub的工做流組件均已開源,咱們也能夠直接查看源代碼(有時候若是開發文檔沒有及時更新,照着文檔配置可能會入坑),以下圖所示:
注意:這裏筆者追加了標籤,使用到了分支名稱。也就是develop分支的代碼構建的鏡像會打上develop-latest的標籤,master相似,以便於服務部署時可以區別開來。
鏡像構建成功以後,咱們須要將鏡像複製到容器服務鏡像倉庫。這裏特此說明一下,之因此添加此步驟,是由於經過容器服務的鏡像倉庫的觸發器觸發服務更新更穩定以及更易於維護。事實上,你們也能夠經過工做流來完成服務的更新,可是相關參數的配置頗爲麻煩,並且很容易配錯。
這裏,咱們用到的組件爲:hub.tencentyun.com/tencenthub/copy_image
組件說明以下所示:
配置參考以下所示:
鏡像複製完成,咱們但願可以在相關的開發組、運維組接收到消息。Tencent Hub這邊也有成熟的輪子——hub.tencentyun.com/tencenthub/notice_dingding。具體以下所示:
相關的配置也比較簡單,不過咱們須要建立一個釘釘自定義機器人:
而後,咱們就可使用此工做流組件進行配置:
至此,整個工做流就配置完成了。固然,咱們也能夠在工做流的結束節點添加webhook通知,只是無法設置消息模板,以下所示:
至此,整個工做流就介紹完畢。你們也能夠根據本身的須要來設計符合本身要求的工做流。
當代碼提交時,就會自動觸發構建,咱們在工做流界面能夠看到當前狀態以及執行歷史:
同時,還能夠查看日誌歷史:
Tencent hub工做流咱們就先介紹到這裏。
接下來,咱們須要切到騰訊雲的容器服務管理面板。
首先咱們須要建立集羣而且添加節點:
而後建立服務(咱們能夠基於鏡像構建服務,也能夠直接建立服務):
接下來,咱們須要設置鏡像觸發器,以下所示:
注意:咱們能夠經過不一樣的標籤觸發不一樣的服務更新,好比develop表明開發環境,master表明正式環境。
此節內容咱們在前面的教程已經講述過,這裏就不贅述了。整個構建過程,咱們能夠添加一些webhook來進行消息集成,方便開發團隊知曉相關狀況以及測試人員進行測試。消息集成這塊,咱們再經過後續的教程來分享咱們團隊的消息集成,你們能夠關注咱們的公衆號「magiccodes」來查看所有教程和文章。