Azure Terraform(八)利用Azure DevOps 實現Infra資源和.NET CORE Web 應用程式的持續整合、持續部署

Grant_Allen發表於2021-02-02

一,引言

  上一篇講解到利用 Azure DevOps 將整個 Azure Web App,Azure Traffic Manager profile,Azure Storage Account,Azure Key Vault 部署到 Azure 上,我們也知道整個 Infra 架構已經實現了自動化部署,而 整個專案Web應該卻沒事實現CI/CD,那麼我們今天繼續關注 Azure DevOps。

--------------------Azure Terraform 系列--------------------

1,Azure Terraform(一)入門簡介

2,Azure Terraform(二)語法詳解

3,Azure Terraform(三)部署 Web 應用程式

4,Azure Terraform(四)狀態檔案儲存

5,Azure Terraform(五)利用Azure DevOps 實現自動化部署基礎資源

6,Azure Terraform(六)Common Module

7,Azure Terraform(七)利用Azure DevOps 實現自動化部署基礎資源(補充)

8,Azure Terraform(八)利用Azure DevOps 實現Infra資源和.NET CORE Web 應用程式的持續整合、持續部署

二,正文

1,Azure DevOps 建立新專案

輸入專案名稱 “CnBateBlogWeb_Infrastructure_V3”,點選 “Create” 建立專案。

2,配置 Azure DevOps Pipeline

2.1,Continuous integration

選擇 “Pipelines=》pipelines”,點選 “Create Pipeline” 建立管道

點選圖中圈中的部分,使用經典編輯器建立沒有 YAML 的管道

選擇 “GitHub”,並且驗證連線

Repository 選擇專案程式碼所在的 Repository

Default branch for manual and scheduled builds 選擇:“master”

點選 “Continues”,進入下一步

需要選擇模板,搜尋框中輸入 “ASP.NET Core”,選擇對應的模板,點選“Apply”

由於我這裡演示的 Web 專案沒有單元測試,所有可以將 “Test” 整個Task 移除掉

選中當前 “Task”,點選 “Remove” 進行移除。

切換到 “Triggers”,開啟 “Enable continuous intergration” 和 “Enable pull request validation”

最後,我們修改當前 pipeline 的名稱為 “CnBateBlogWeb_ASP.NET Core-CI”,並且點選 “Save&queue” 儲存並且加入到佇列

執行 pipeline,點選 “Save and run”

稍等之後,我們可以看到執行成功

2.2,Continuous Deploy

2.2.1,新增 Infra Deploy

選擇 “Pipeline=》Releases”,點選 “New pipeline” 建立新的 releases pipeline

首先新增 Infra Stage,我就不過多演示了,大家可以參考 

相關 Task

相關引數變數:

Name Value
cnbateblogweb01_appservicename

CnBateBlogWeb01

cnbateblogweb02_appservicename

CnBateBlogWeb02

keyvault  cnbate-terraform-kv8
keyvault_sc  terraform-stste-storage-key
storage_account  cnbateterraformstorage
storage_account_container  terraform-state
storage_account_container_key  cnbate.terraform.stats
terraform_rg  Web_Test_TF_RG

修改 “releases pipeline” 名稱 “CnBateBlogWeb_pipeline_CD”,點選 “Save” 進行儲存操作

 

2.2.2,新增 Application Deploy

點選 “+Add”,新增新的 “Artifacts”

選擇 “Build”,編輯相關引數

Project 選擇:“CnBateBlogWeb_Infrastructure_V3”

Source(build pipeline):"CnBateBlogWeb_ASP.NET Core-CI"

點選 “Add”,確認新增 "Artifacts"

點選 “+Add” 新增 Application Deploy Step

模板選擇先點選 “Empty job”,新增一個新的空Job

修改當前 Stage name 為 “Deploy Application”

接下來我們為當前 Job 新增 task

搜尋框中輸入 “Azure App Service deploy”,點選 “Add”

修改相關引數

Display name:“Azure App Service Deploy: $(cnbateblogweb01_appservicename)”

Azure subscription 選擇當前自己的訂閱

App Service type 選擇:“Web App on Linux”

App Service name:“$(cnbateblogweb01_appservicename)”

Package of folder:選擇 "CnBateBlogWeb_ASP.NET Core-CI" 下的專案 Build 成功的 Package or folder,點選 “OK”

接下來我們新增第二個 Azure App Service Deploy

最後,點選 “Save” 進行儲存操作

至於專案的 “Artifacts” 的觸發方式,大家可以結合自己實際專案,合理選擇。當前我不設定任何自動觸發機制

3,測試執行 Pipeline,部署 Infra 資源、Application 資源

點選 “Create release”,執行 releases pipeline

點選 “Create” 確認建立

部署成功

我們轉到 Azure Portal 檢視資源部署情況

訪問 "CnBateBlogWeb01"

訪問 "CnBateBlogWeb02"

訪問 Traffic Manager profile 的 DNS:”http://cnbateblogweb.trafficmanager.net/“

Bingo,成功!!!!!φ(゜▽゜*)♪φ(゜▽゜*)♪*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

三,結尾

  今天我們通過 Azure DevOps 將基礎設施資源和應用專案部署到 Azure 上,文中的實踐操作比較多,大家要多多練習。本文所分享的內容也存在著很多我自己的一些理解,有理解不到位的,還希望多多包涵,並且指出不足之處。

參考資料:Terraform 官方azurerm 文件

Terraform_Cnbate_Traffic_Manager github:https://github.com/yunqian44/Terraform_Cnbate_Traffic_Manager

CnBateBlogWeb github:https://github.com/yunqian44/CnBateBlogWeb

作者:Allen 

版權:轉載請在文章明顯位置註明作者及出處。如發現錯誤,歡迎批評指正。

相關文章