Docker最全教程之使用Tencent Hub来完成CI(十)
本周更新兩篇,保證不太監!
在本系列教程中,筆者希望將必要的知識點圍繞理論、流程(工作流程)、方法、實踐來進行講解,而不是單純的為講解知識點而進行講解。也就是說,筆者希望能夠讓大家將理論、知識、思想和指導應用到工作的實際場景和實踐之中,而不是拿著字典寫文章,抱著寶典寫代碼。至于很多具體的語法、技術細節,除了常用的知識點,筆者更希望大家閱讀官方文檔——畢竟看官網比看書靠譜多了,官網會一直更新和改進,而書和教程自出版或發布之后,基本上就“死“了。
本系列教程預計全部完成還需要2到3個月的時間。在這個過程中,您可以加入我們的QQ群(85318032)一起討論、交流和分享這一塊的技術。我們也希望得到大家的支持,請多多點贊或者打賞一杯咖啡,你們的支持是我們前進的最大動力!
使用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”來查看全部教程和文章。
如果喜歡作者的文章,請關注“magiccodes”訂閱號以便第一時間獲得最新內容。本文版權歸作者和湖南心萊信息科技有限公司共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
QQ群:
編程交流群<85318032>?
產品交流群<897857351>
Docker最全教程——從理論到實戰(一)
Docker最全教程——從理論到實戰(二)
Docker最全教程——從理論到實戰(三)
Docker最全教程——從理論到實戰(四)
Docker最全教程——從理論到實戰(五)
Docker最全教程——從理論到實戰(六)
Docker最全教程——從理論到實戰(七)
Docker最全教程——從理論到實戰(八)? ??
Docker最全教程——從理論到實戰(九)
總結
以上是生活随笔為你收集整理的Docker最全教程之使用Tencent Hub来完成CI(十)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET Core 如何为项目提供高性能
- 下一篇: EF Core 数据库 Provider