docker4dotnet #5 使用VSTS/TFS搭建基於容器的持續交付管道

在過去的幾篇d4d系列中,我給你們介紹瞭如何使用docker來支持asp.net core的應用開發,打包的場景。Asp.net core的跨平臺開發能力爲.net開發人員提供了使用容器進行應用開發的能力,今天這篇文章將對如何使用微軟的全生命週期管理平臺VSTS/TFS來構建基於容器的CI/CD管道來支持團隊開發的場景。mysql

#1 前世此生 & 世界你好
#2 容器化主機
#3 在macOS上使用Visual Studio Code和Docker開發asp.net core和mysql應用
#4 使用Azure雲存儲構建高速 Docker registryios

Visual Studio Team Services/Team Foundation Server

VSTS/TFS是微軟Visual Studio產品組提供給廣大開發者的全生命週期管理平臺,Visual Studio Team Service (VSTS)是構建在微軟公有云Azure平臺上的Saas架構的開發平臺,爲中小團隊和跨地域的大型團隊提供軟件開發過程的端到端管理能力,這個平臺對於5名如下開發團隊的小團隊徹底免費(同時能夠有任意數量的管理人員參與,VSTS經過區分stakeholder和developer兩種角色,爲stakeholder這些只須要管理過程而無需修改代碼的管理人員提供了徹底免費的訪問許可)。Team Foundation Server是VSTS的企業版,能夠由企業獨立部署於私有云或者數據中心中,並提供與VSTS一致的功能體驗。sql

關於VSTS和TFS的功能介紹,請參考本博客或者公衆號中的相關文章,連接以下:docker

http://devopshub.cn/tag/vsts/macos

基於容器的CI/CD服務器

容器技術所解決的主要問題是環境的一致性和同一版本的應用在不一樣的環境中的遷移問題,雖然對單個開發人員也提供了更高效的開發模式,但容器的做用在團隊開發中和管理開發/測試/預生產/生產環境中會體現得更有價值。從事軟件開發的技術人員都知道,在開發過程當中保持不一樣開發人員/測試人員使用統一的環境是一件很是困難的事情,不少過程當中的問題都是環境不一致形成的。容器正是解決這一問題的有效方式。微信

爲了可以構建基於容器的CI/CD,咱們須要如下工具鏈:架構

d4d-5-001

下圖展現了以上工具鏈的關係和工做流程asp.net

d4d-5-002

下圖中能夠看到,要構建完整的發佈工具,咱們須要一個多級技術棧,Docker的容器化工具下降了最底層環境和應用技術棧的複雜度,讓咱們的發佈過程變得更簡單。運維

d4d-5-003

下面咱們就來看一下如何配置這樣一套基於容器的CI/CD環境

1. 建立容器化主機做爲開發/測試/生產環境

關於如何在開發環境中建立容器化主機支持編碼和調試,請參考

#1 前世此生 & 世界你好

關於如何在雲環境中建立容器化主機支持測試和生產環境,請參考

#2 容器化主機

2. 在Linux服務器上配置TFS構建代理

關於如何配置Linux服務器上的構建代理,請參考

用VSTS/TFS搭建iOS持續集成環境

3. 將容器化主機鏈接到TFS

進入TFS後臺,點擊 服務 | 新建服務終結點 |Dcoker Host

d4d-5-004

將 容器化主機的 url,和~/.docker/machine/machines/{machine-name} 目錄下的pem的文件內容按照如下關係拷貝到配置頁面中。

d4d-5-005

重複以上過程,分別綁定用戶測試和生產環境的容器化主機配置,建立如下docker host終結點

○ Dockerhost-test
○ Dockerhost-pro

4. 將docker hub帳號鏈接到TFS

進入TFS後臺,點擊 服務 | 新建服務終結點 | Docker Registry

d4d-5-006

填寫你的docker hub用戶名,密碼和郵件地址;若是使用私有的registry,請更新Docker Regsitry地址。

d4d-5-007

5. 配置CI定義

建立生成定義,並將默認代理隊列指向對應在Linux服務器上構建代理隊列

d4d-5-008

在 生成 步驟中分別添加如下構建任務

d4d-5-009

具體爲
a. dotnet restore
b. dotnet build
c. dotnet publish
d. docker build
e. docker push

如下爲docker build步驟的詳細配置,注意這裏咱們使用$(Build.BuildNumber)這個環境變量做爲容器鏡像的tag,這樣咱們就可使用統一的構建號來管理容器鏡像的不一樣版本。

d4d-5-010

如下是docker push的詳細配置,此步驟將把構建好的容器上傳到docker hub並使用$(Build.BuildNumber)做爲版本號tag。

d4d-5-011

6. 建立CD發佈管道

建立如下發布管道配置,分別指定測試環境和生產建立的部署步驟

d4d-5-012

在每個環境中,咱們都執行如下步驟
○ Stop running container
○ Remove container
○ Run container

測試環境和生產環境分別使用不一樣的容器化主機鏈接(在第1-2步中建立的鏈接)。

7. 配置測試環境到生產環境的升級策略

如下配置要求生產環境的部署只有在測試環境部署成功的狀況下才能執行

d4d-5-013

如下配置要求生產環境的部署必須由特定的用戶進行審批經過後才能執行

d4d-5-014

至此,咱們就完成了基於容器的CI/CD發佈管道配置。


 

請關注微信公衆號 【devopshub】,獲取更多關於DevOps研發運維一體化的信息

qrcode_for_gh_b7c158df1fd1_430

相關文章
相關標籤/搜索