注意:因應佈署策略不同,可能會進行停機佈署,須注意不要將正常停機程序,因為Health Check變成阻礙佈署的絆腳石
CI/CD 流程概略圖如下。從 Repo 取得 master branch 後於 Build Agent 進行 restore、build、test、code analysis ...等工作,產生出 artifact 後進行 release。我們在 release 前新增了一項工作:Health Check,確認每項服務沒有回傳 503 錯誤後,才開始正式佈署。
在 Visual Studio Marketplace 網站上,你可以找到 Azure DevOps Asp.Net Core Health Check extensions, 您可以點選 Get it free 安裝至 Azure DevOps Service/Server。
我們回到 Azure DevOps Pipelines 內的 Release > 新增或編輯既有的 Release > 點選Prod 的 pre-condition
啟用 Gates,並點選 Add 按鈕加入 ASP.NET Core Health Checks
設定 Health 服務 Uri,藉此監控相依服務健康狀態
比較特別的是,在自訂 Health Check Response 使用的是 UI 的 ResponseWriter (UIResponseWriter.WriteHealthCheckUIResponse),且需要回傳 Http Status Code 為503。如下程式碼。
如果您對於這段程式碼有些陌生,建議您先閱讀 如何為 ASP.NET Core 與相依服務建立執行狀態檢查 系列的文章,主要說明是 自訂 Health Checks Response 與 Health Checks UI 圖形化介面呈現服務健康狀態 這兩篇文章。
如此一來,即完成我們的設定。更多詳細內容請參考:Azure DevOps Asp.Net Core Health Check extensions
0 留言