使用 Azure DevOps 設置藍綠部署

Photo by Alvin Memisevic on Unsplash

起因

延續上篇文章,當我們使用開發工具或是在 Release pipeline 上部署 App Service 時,都會有一定的停機時間,所以經常安排在晚間離峰時部署,以減少影響,那藍綠部署可以作為解決方案之一,可以讓系統在不間斷提供服務的情況下,上線新版本的部署方式,讓我們在收到使用者回饋的bug當下,可以快速上線修復後的版本或是回滾到上個版本.


前置環境

Web Application 服務
- 名稱: blue-green-0523
- 發布: 代碼
- 執行階段堆疊: Node16LTS
- 作業系統: Linux
- 地區: East Asia
- SKU和大小: 標準S1

在建立好的 App Service 裡,打開部署/部署位置
加入新的部署位置


設置 Release

建立新的 Release
並選擇 Azure App Service deployment

設置 Artifact

設置 Stage 1

設置部署服務

下面的設定開啟後
會先部署到稍早加入的 pre-blue-green-0523
而不影響到正式的生產環境

設置 Stage

移除 Deploy Azure App Service

對著 Deploy Azure App Service右鍵移除該 task

設置 Slot Swap 設定

新增 Task

設置剛新增的 Task

在這邊我們設置要交換的來源為 pre-blue-green-0523
也就是我們上一個 stage 部署的位置
並且將交換的位置設為 Production 位置

在 Stage 上設置簽核
執行 Release
在執行之前,我分別將 blue-green-0523 及 pre-blue-green-0523 的 URL 位置開啟
當第一個 stage 部署成功時
pre-blue-green-0523 的內容已經被取代為專案內容

當第二個 stage 交換成功後

blue-green-0523 和 pre-blue-green-0523 的內容做交換了

查看第二個 stage 的 log
也可以看到會先做暖機的動作 在交換兩個 App Service
達成服務不中斷

本文同步發布在: 使用 Azure Devops 設置藍綠部署 - 張育誠 - Medium
若對內容有任何疑問或內容有錯誤,歡迎在下方留言讓我知道,
或是來信: calvinchang@build-school.com
張育誠
張育誠

在 Build School 擔任 Software Engineer & Student Coach
聯絡信箱: calvinchang@build-school.com