使用Tencent Hub來完成CI
關於Tencent Hub
Tencent Hub是騰訊出品的DevOps服務。主要提供多儲存格式的版本管理,支援Docker Image、Binary、Helm Charts 等多種型別檔案。同時提供 DevOps 工作流的編排引擎,並且支援編排 DevOps 工作流,以打造更強的持續整合與持續交付力,加快軟體迭代釋出速度。
相比Azure DevOps,Tencent Hub主要面對國內開發者,因此在CI這塊,更容易水土相符。
使用Tencent Hub配置一個簡單的CI流程
在開始之前,我們先得開通Tencent Hub 服務。這些前置條件我們就不再贅述了。
在本篇教程中,我們使用Tencent Hub工作流來自動拉取程式碼並且構建、推送映象到容器服務映象倉庫,並且通過映象觸發器來自動觸發服務更新。
主體配置流程
使用Tencent Hub的話,整個配置過程比較簡單,主體配置流程如下所示:
建立Tencent Hub專案倉庫
在開始之前,我們需要在Tencent Hub上建立一個專案倉庫,如下圖所示:
建立完成後如圖所示:
至此,專案倉庫建立完成。
注意:Tencent Hub專案倉庫實質上是一個映象倉庫,可以存放我們構建的docker映象。
程式碼庫授權
倉庫建立完畢,接下來我們需要進行程式碼庫授權,以便工作流能夠獲取程式碼以及自動觸發構建。首先,我們先點選設定介面,開啟如下所示的介面:
如圖所示,程式碼庫授權支援github、gitlab、碼雲和工蜂,這裡筆者選擇了碼雲,用於演示。
建立容器服務映象倉庫
雖然我們已經建立Tencent Hub的映象倉庫,但是為了方便,筆者建議大家還建立騰訊雲容器服務的映象倉庫,以便使用預設的觸發器來觸發服務更新。相比使用工作流來實現,更加穩定和易於維護。騰訊雲容器服務映象倉庫介面如下所示:
建立之後,我們就可以獲得完整的映象倉庫地址,如下圖所示:
建立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”來檢視全部教程和文章。