[VSTS]透過 VSTS 的排程 Build 和 Alert 通知,簡化 Azure WebApp的部屬流程

透過 VSTS 的排程 Build 和 Alert 的通知,讓原本自己要花時間去處理的事情,都變成自動部屬了。

原本對我來說,只是把 Visual Studio Team Services 只當成一個免費的版本控制軟體,基本上只要可以 Check In / Check out 就滿足我的基本需求了。但隨著系統開發越來越多關係人在當中,有開發的程式設計師和美工,有測試人員和專案主管需要一起在這個流程內,那麼就不只是一個單單版本控制那麼簡單了,我們透過 Azure Web App 的特性,也將上面切分兩個部屬位置 staging 和 testing 兩區,此時就會希望每天能自動將之前所寫好的程式放到 staging 來進行測試

此時我們就想要搭配 VSTS 上的 Build 功能來完成,因此我們在進入我們 VSTS 的專案內,選擇 Build 選項

進入選單之後,選擇圖上的 + 的選項,來新增一組新的 Build 設定

在 VSTS 內會有一些相關的範本可以提供我們參考,原本我是選擇 Visual Studio 的樣板格式,但測試幾次之後,發現如果我還要多佈署到 Azure Web App 的時候,有不少的設定都沒有預設值,要自己加入。

因此透過 Ian Chen 的幫忙之後,才發現自己多走一些冤枉路,應該要改成選擇 Deployment → Azure WebApp 的樣板,這樣會讓預設是將 Build 好的打包成為 ZIP,就不用自己去注意那些參數的設定值了。

接著就選擇我們 Source Code 的來源,這裡選擇我們的 Repository 和 brance 之後,就可以選擇下方的 Create 的按鈕,產生 Build 的設定資料

在這個步驟是我之前卡關的地方,因為一開始我選擇其他的樣板,因此這裡 MSBuild Arguments 的預設值是空的,變成要自己輸入才會打包成壓縮檔。但如果您使用 Azure WebApp 的樣板,那麼就不會有問題,但預防自己老年癡呆,還是先把參數給記錄下來。

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"

而在 Azure Depolyment 就會比較麻煩,這裡要先輸入 Azure Subscription 的設定,如果之前還沒有建立過,那麼就先按下旁邊的 Manager 的按鈕,先進行 Azure 連線的設定。

我們選擇 Services → New Service Endpoint → Azure Classic 

選擇下方的 publish setting file ,可以連接到 Azure 上下載設定檔案( 此部分設定也可以參考小章哥的文章 )

將檔案內的 Id , Name 和 Certificate 給填入之後,就可以按下 OK 存檔

此時回到 Azure Depolyment 內,有可能無法選擇到剛剛所建立的設定,你可以選擇放棄該設定再重新來一次,應該就可以選擇到剛才所設定的 Azure 設定了。因此這裡我們依序填入相關資料,如果在 Slot 的部分我們選擇空白,那麼就會將整個程式部暑到 Production 上,但如果您想部暑到特定的位置,則在 Slot 內輸入預計的位置名稱。

完成相關的步驟內的設定後,就可以按下 Save 按鈕並輸入 Build 設定名稱,完成此一部分的設定。


在完成上述的設定後,我們先選擇利用「Queue Build」的方式去驗證一下

按下 OK 按鈕之後,就會將此 Build 放入排程內來準備執行。

如果可以類似下圖,沒有相關意外的話,那麼應該就完成自動 Build 和部屬上 Azure 的環境了。

因為我們期待每天能自動去執行這件事情,而不是自己每天上來做,因此我們在測試完成之後,重新選擇剛剛的那個 Build 設定,按下 Edit 的選項來做編輯

在這裡我們選擇「Trigger」來設定 Build 的時機點,因為每個 VSTS 上每月只能免費 240 分鐘,所以這裡我將 CI 的部分給取消,改成排程的方式來執行,選擇一個凌晨的時間來做自動部屬,我想這個時間應該沒有人在寫程式了

當設定好之後,只要到達預定的時間,就會自動去進行這些相關的處理,我們從執行結果中,也可以按照排程的方式去進行的話,會有一個時鐘的圖示出現


 

從前面的過程看起來都很順利,但每天如果成功或失敗,還要自己上去查看,對我這個懶人來說,也實在太麻煩了,因此我決定再到 VSTS 的控制台內,加入一個 Alert 的通知設定,這裡我選擇當專案如果 Build 成功的時候,會做自動通知,確定無誤之後,就可以按下下方的 OK,將這組警示通知給儲存起來。

這樣當有自動完成 Build 的時候,就會收到 VSTS 寄來的通知,這樣只要看 Mail 就可以知道每天 Build 的狀況了。


 

透過上述相關的設定,就可以完成一些相關自動化的處理,雖然並不是甚麼了不起的功能,卻可以簡化相關的處理,讓我們每天可以更專注在必須要投入心力的地方,也不會因為這些看起來不重要,但卻浪費不少時間需要去處理的雜事上。

這裡也要感謝 Ian Chan , Sky Chang 和小章哥的支援,讓我可以把這些步驟都整合起來,節省好幾天自己摸索的時間。