程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> docker4dotnet #5 使用VSTS/TFS搭建基於容器的持續交付管道,

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

編輯:關於.NET

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


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

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

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一致的功能體驗。

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

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

基於容器的CI/CD

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

為了能夠構建基於容器的CI/CD,我們需要以下工具鏈:

d4d-5-001

下圖展示了以上工具鏈的關系和工作流程

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved