ASP.NET Core Health Check 也能與 Azure DevOps Release 進行整合,於佈署前確認相關服務是否正常。若相依服務有運作失敗的情況,會不允許進行佈署,藉此可以先排除有問題的服務,再進行上版,降低問題複雜度。 


注意:因應佈署策略不同,可能會進行停機佈署,須注意不要將正常停機程序,因為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