0%

【CI/CD】2. 透過VSTS自動佈署程式到Azure AppService

這邊的目標是當CI完成時,自動將程式佈署到Azure AppService,也就是所謂的CD部分

持續部署(Continuous Deployment)
大部分的持續整合系統允許在建置完成後自動執行程式碼。因此能夠寫一段程式碼來布署應用程式至任何人都可以觀察的測試伺服器。在持續性整合未來的思考發展成像持續性布署邁進。
持續性布署將要求直接將軟體布署至測試環境中,這通常需要額外的自動化機制來防止程式缺陷。

希望
1.CI部分執行完畢後,將程式自動佈署到機器
2.依據不同的CI Task,決定佈署到哪些機器 (測試機 or 多台正式機…等)
3.**人員核准 **(正式機通常需要一定權限核准才能執行佈署)



1.先進到VSTS的Release > Create release Definitions

[![](https://4.bp.blogspot.com/-j4SKGxGUXWc/WmqJEJctL1I/AAAAAAAAIZY/-CHGLoBOXJY8d9VtIaz-35vVkgPS9FuCgCLcBGAs/s640/1.png)](https://4.bp.blogspot.com/-j4SKGxGUXWc/WmqJEJctL1I/AAAAAAAAIZY/-CHGLoBOXJY8d9VtIaz-35vVkgPS9FuCgCLcBGAs/s1600/1.png)

2.選擇Empty Process

[![](https://3.bp.blogspot.com/-yx2eYYmHSqg/WmqJXg1LlmI/AAAAAAAAIZc/8SxeXNTgDkEk7xDragehBih3J8u9hOfkwCLcBGAs/s400/1.png)](https://3.bp.blogspot.com/-yx2eYYmHSqg/WmqJXg1LlmI/AAAAAAAAIZc/8SxeXNTgDkEk7xDragehBih3J8u9hOfkwCLcBGAs/s1600/1.png)

3.Artifacts選擇佈署要用哪一組CI建置的成品

[![](https://4.bp.blogspot.com/-lpW6Y2RApv4/WmqJ2ScPvCI/AAAAAAAAIZo/Hdz-H64BtY0GiD8xdEHt7ZezAOQQUKDCgCLcBGAs/s400/1.png)](https://4.bp.blogspot.com/-lpW6Y2RApv4/WmqJ2ScPvCI/AAAAAAAAIZo/Hdz-H64BtY0GiD8xdEHt7ZezAOQQUKDCgCLcBGAs/s1600/1.png)
[![](https://4.bp.blogspot.com/-1yfWjZ26ZWk/WmqKTGiIrFI/AAAAAAAAIZw/Oq49HUpyphwVZ7FcV-xFVEpUfNB2UpT9gCLcBGAs/s400/1.png)](https://4.bp.blogspot.com/-1yfWjZ26ZWk/WmqKTGiIrFI/AAAAAAAAIZw/Oq49HUpyphwVZ7FcV-xFVEpUfNB2UpT9gCLcBGAs/s1600/1.png)

4.設定Trigger條件

我們希望上一步驟選擇的CI Task建置完成後,自動觸發這個的CD流程,所以要加上Trigger條件
[![](https://3.bp.blogspot.com/-LFkrO0ACJ5w/WmqMbAIfg5I/AAAAAAAAIaM/jGU4bXy_CZo17kKHN4h_1IdZAeNkN37KgCLcBGAs/s400/1.png)](https://3.bp.blogspot.com/-LFkrO0ACJ5w/WmqMbAIfg5I/AAAAAAAAIaM/jGU4bXy_CZo17kKHN4h_1IdZAeNkN37KgCLcBGAs/s1600/1.png)
[![](https://4.bp.blogspot.com/-xUgj-OM9P4Y/WmqMr611LmI/AAAAAAAAIaQ/nfdvmcsj_88OOwqq6OK32BNanBRvghZ6gCLcBGAs/s400/1.png)](https://4.bp.blogspot.com/-xUgj-OM9P4Y/WmqMr611LmI/AAAAAAAAIaQ/nfdvmcsj_88OOwqq6OK32BNanBRvghZ6gCLcBGAs/s1600/1.png)

5.新增Enviroment Task > Azure App Service Deploy

[![](https://2.bp.blogspot.com/-iBKwQJIYa6Q/WmqM79F_lYI/AAAAAAAAIaY/gsTQ7EtWRywGnpyXXO42WAjG--EmzdfNACLcBGAs/s400/1.png)](https://2.bp.blogspot.com/-iBKwQJIYa6Q/WmqM79F_lYI/AAAAAAAAIaY/gsTQ7EtWRywGnpyXXO42WAjG--EmzdfNACLcBGAs/s1600/1.png)
[![](https://1.bp.blogspot.com/-DwVyGiM89Us/WmqNTD0Dv3I/AAAAAAAAIag/QcKJhKXT1RQPC1rYn-E50OCxSaDBwFYegCLcBGAs/s400/1.png)](https://1.bp.blogspot.com/-DwVyGiM89Us/WmqNTD0Dv3I/AAAAAAAAIag/QcKJhKXT1RQPC1rYn-E50OCxSaDBwFYegCLcBGAs/s1600/1.png)

6.設定相關參數

[![](https://3.bp.blogspot.com/-SdtrEkvtTsU/WmqW3HlYaJI/AAAAAAAAIa0/LewJi_YI2qsNJH7MMi5KQNJiVdOwSvF-gCLcBGAs/s1600/1.png)](https://3.bp.blogspot.com/-SdtrEkvtTsU/WmqW3HlYaJI/AAAAAAAAIa0/LewJi_YI2qsNJH7MMi5KQNJiVdOwSvF-gCLcBGAs/s1600/1.png)
**Azure subscription **: 選擇你訂閱的Azure服務,基本如果是同一個帳號,下拉選單就可以看到

Package or folder : 因為我們是採用WebDeploy的方式佈署,所以要輸入Pakage的路徑,紅色區塊請填你CI Task所設定的名稱,CI建置會放置在同名的資料夾底下,之後就是Drop底下建置出來的.zip檔

人員核准

依照上述步驟做完,基本上佈署流程大致上已經完成,但通常會有一些狀況是希望做佈署動作前能夠先透過人來審核,例如正式機佈署。 我們一定不希望隨便人簽入程式後,正式機的CD流程就自動觸發佈署去了。

設定審核人員

[![](https://3.bp.blogspot.com/-9Fe6kin7wkU/WmqYnG25onI/AAAAAAAAIbA/54Z9iUfEdmM2_U9JBtD2SoevurGaoIsbACLcBGAs/s400/1.png)](https://3.bp.blogspot.com/-9Fe6kin7wkU/WmqYnG25onI/AAAAAAAAIbA/54Z9iUfEdmM2_U9JBtD2SoevurGaoIsbACLcBGAs/s1600/1.png)
[![](https://2.bp.blogspot.com/-ztGHArbq6VQ/WmqZCBvHSJI/AAAAAAAAIbE/sHDYhhNkmMI8LIkdzRjrGt__lGLvjb-ggCLcBGAs/s400/1.png)](https://2.bp.blogspot.com/-ztGHArbq6VQ/WmqZCBvHSJI/AAAAAAAAIbE/sHDYhhNkmMI8LIkdzRjrGt__lGLvjb-ggCLcBGAs/s1600/1.png)
**Any Order : **上面所選的人員每一個都要核准才會觸發
**In sequence : **上面所選的人員每一個都要**依序**核准才會觸發
**Any One Order **** : **上面所選的人員**任何一人核准即可**
如果有卡核准的話,Release不會自動執行,而是看到這個畫面
[![](https://2.bp.blogspot.com/-tp3q8i0NZaM/WmqbBeT2hOI/AAAAAAAAIbc/B20xUeyN9YwlKHd7EYOqskqYywkF6SbCACLcBGAs/s400/1.png)](https://2.bp.blogspot.com/-tp3q8i0NZaM/WmqbBeT2hOI/AAAAAAAAIbc/B20xUeyN9YwlKHd7EYOqskqYywkF6SbCACLcBGAs/s1600/1.png)
點兩下進去後可以核准
[![](https://3.bp.blogspot.com/-KP6jYJbXaB4/WmqbqoYwdjI/AAAAAAAAIbo/ASJM3yKXy_8twOKj380r6aoKhzZI3em_QCLcBGAs/s400/1.png)](https://3.bp.blogspot.com/-KP6jYJbXaB4/WmqbqoYwdjI/AAAAAAAAIbo/ASJM3yKXy_8twOKj380r6aoKhzZI3em_QCLcBGAs/s1600/1.png)

選擇特定版本佈署

[![](https://3.bp.blogspot.com/-Yj3LrhbV4OI/WmqcDGeKk8I/AAAAAAAAIbs/5zJArJ9S2JoeganmsxpN0oOLlnHb9mlpgCLcBGAs/s400/1.png)](https://3.bp.blogspot.com/-Yj3LrhbV4OI/WmqcDGeKk8I/AAAAAAAAIbs/5zJArJ9S2JoeganmsxpN0oOLlnHb9mlpgCLcBGAs/s1600/1.png)
[![](https://2.bp.blogspot.com/-SCDaX0YHudE/WmqcPmnMTZI/AAAAAAAAIb0/squNlawHwwgeW54wH2D4ku-wSVQLFrhdgCLcBGAs/s400/1.png)](https://2.bp.blogspot.com/-SCDaX0YHudE/WmqcPmnMTZI/AAAAAAAAIb0/squNlawHwwgeW54wH2D4ku-wSVQLFrhdgCLcBGAs/s1600/1.png)

小結

以上這邊,之後只要有人簽入程式,CI流程有設定Trigger的話就會自動觸發,CI流程沒問題,CD流程就會接著做,再依據有無卡審核做後續行為。
每次的執行狀況也都可以清楚看到狀況
[![](https://1.bp.blogspot.com/-2UvlMPIFHiA/WmqaGN8VLpI/AAAAAAAAIbQ/C1GftxgAeBIqRCPMuJCNQU39Bu32ILIvQCLcBGAs/s640/1.png)](https://1.bp.blogspot.com/-2UvlMPIFHiA/WmqaGN8VLpI/AAAAAAAAIbQ/C1GftxgAeBIqRCPMuJCNQU39Bu32ILIvQCLcBGAs/s1600/1.png)
[![](https://2.bp.blogspot.com/-QXjIEo2-s1M/WmqaX4umkhI/AAAAAAAAIbU/Sg2soTofoawjOVzoZtEC98DLqtFGATFnQCLcBGAs/s640/1.png)](https://2.bp.blogspot.com/-QXjIEo2-s1M/WmqaX4umkhI/AAAAAAAAIbU/Sg2soTofoawjOVzoZtEC98DLqtFGATFnQCLcBGAs/s1600/1.png)
下一篇來說如何透過VSTS來執行切換Slot,感覺還有好幾篇可以寫...