Docker最全教程之使用Tencent Hub來完成CI(九)
使用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”來查看全部教程和文章。
往期內容鏈接
Docker最全教程——從理論到實戰(一)Docker最全教程——從理論到實戰(二)
Docker最全教程——從理論到實戰(三)Docker最全教程——從理論到實戰(四)
Docker最全教程——從理論到實戰(五) Docker最全教程——從理論到實戰(六)Docker最全教程——從理論到實戰(七) Docker最全教程——從理論到實戰(八) 我的博客即將同步至騰訊雲+社區,邀請大家一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=1uzymsc0hstza
Docker最全教程之使用Tencent Hub來完成CI(九)