一,引言
上一篇講解到利用 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
版權:轉載請在文章明顯位置註明作者及出處。如發現錯誤,歡迎批評指正。