uncategorized

用Azure Web App內的Continuous Delivery快速建置VSTS的CI / CD流程

如果版控是用VSTS,我們可以在VSTS裡面設定Continuous Build&Continuous Release,讓我們的Web專案可以自動化建置到自動化佈署,且佈署到Azure Web App又有Task可用,基本上只需要把相關屬性設定完成,就可以運作,整體來說並會太困難

但是,對於VSTS不熟的人,可能要花一點時間去了解如何設定這些Task,才能讓Continuous Build&Continuous Release很順利進行,這樣下來也是需要一點時間,尤其是在Release部分,還要需要額外設定Service Endpoint跟Azure做連接。這一點就需要花一點工了。

現在,想要省掉這些步驟,是可以直接在Azure的Web App屬性中,直接使用Continuous Delivery幫忙去完成VSTS上的CI / CD。在這實作有一個前提要注意的,要用Azure Web App的Continuous Delivery,必須確認你登入Azure的Account,和登入VSTS的Account是否相同,如果,今天你登入Azure和登入VSTS的Account是不相同,就不能用這樣的功能。如果,兩者是相同,就順便在Azure中與VSTS做link吧。做法可以參考這篇從Azure管理Visual Studio Team Services服務

開始設定Continuous Delivery


到Web App的Deployment就可以看到Continuous Delivery,一開始還沒有設定前,會如上圖所示,由於,這目前還在Preview階段,所以,部分功能可能有點陽春,不過,我實作後發現,其實基本的設置已經滿足一個.NET的Web了,看到畫面中的Config,我們按下Config,就開始設定相關Build & Release了

整個設定流程中,不外乎是Source,Build,TestRelease循環,這跟在VSTS上的流程是相同的,如果有在VSTS自行設定過的,對這就不會太陌生,如果從未自己設定過這部分流程,這邊也會一步一步指導設定完成,且會比在VSTS上設定簡單許多,很多部分都自動化幫你做完了

設定Souce


前面提到,如果在Azure裡面,你的Visual Studio Team Services account已經與Azure綁定,這邊資訊就會自動帶出來,在VSTS放程式碼的地方叫做Code,這裡是用Source,但是意思是相同,裡面有幾個屬性分別如下

  • Project : VSTS內的專案
  • Repository : VSTS內Code的位置
  • Branch : 選擇要部署的Branch

設定Build


設定要Build專案的Framework,目前只有提供ASP.NET & ASP.NET Core,其他Web,我想這邊因該沒有辦法直接Build,如果,設定完成後,會自動在VSTS的Build中,長出這樣的建置流程,而這個流程。基本上就包含所有建置該有的Task了

很多人在build Solution的MS Build Arguments可能不會進行設定,而這邊會在build SolutionMS Build Arguments內設定參數,參數內容主要是把專案發行成Package,Release則可以透過Web Deploy方式佈署到Azure

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

雖然,透過這樣方式會幫你在VSTS自動化建置好Build的Task流程,但是,不代表我們不能自行修改,我們也可以在依照自己的特性,去修改Build裡面每個Task屬性
或是增加Task,讓整個Build是可以符合本身專案需求。不過,有一點我沒有特別嘗試,就是如果是非.NET專案,例如PHP專案,我在Azure Web App設定Continuous Delivery,這樣的結果會是如何?

我猜想它依舊會建立相同流程的Task,只是這些流程可能不符合PHP特性,造成Build Fail,自己必須手動在修改這裡面所有Task,但是,這樣似乎降低在Web App內使用Continuous Delivery的方便性,畢竟,如果客製化或是手動程度高,這樣想要省工的地方也沒多了,跟自己在VSTS內設定並沒有差太多,而剩下唯一好處就是在Web App內,可以看到VSTS佈署到Web App的相關資訊,不需要再到VSTS內看

設定Test & Deploy


設定Test,這邊主要是設定Loading Test,如果本身沒有做這部分,就可以忽略不需要設定,如果有,這邊只需要開起就可以,另外,在Deploy部分,也只要打開就可以,會自動幫你在VSTS的Release設定好Deploy Task

其中,連要在Azure App Service Deploy中的Service Endpoint都幫你設定好,也會自動幫你跟之前建立的Build綁定,就可以做到CI & CD

如果要在VSTS做到更細緻化,這樣方式只是幫我們把骨幹建立出來,其餘部分,還是建議到VSTS內去做調整,在管理上也會比較方便點