本公司在自動化部署ASP .NET專案主要分為以下兩種:Deploy over SSH和Web Deploy,而此篇主要比較兩者各方面的差異,包括如何部署,架設伺服器流程與自動化部署方式,並說明使用Web Deploy部署到IIS Server。
Deploy over SSH | Web Deploy處理常式 | |
部署方式 | 直接利用SSH將專案上傳至IIS站台資料夾 | 使用Visual Studio IDE建立設定檔(.pubxml),再利用設定檔進行部署 |
優點 | 1.事前準備較單純 2.可經由SSH執行server端的batch指令做出更彈性的操作 。 |
1.第一次部署以後只會上傳更新過後的檔案,後續部署較快 2.設定檔依附於專案,因此專案有改動時不必更改上傳設定 3.可設定忽略上傳的檔案(ex.Web.config) 4.可使用IIS虛擬帳戶進行部署,用戶權限管理較方便 |
缺點 | 1.需要事先架設ssh server 2.上傳的檔案路徑寫死,若專案有改動就必須更改ssh 3.連接身分的權限必須規劃好,否則有安全性問題 4.因為是直接將資料夾複製至Server端,因此容易上傳非必要的檔案,且部署版本難以掌控 |
1.IIS第一次設定較繁瑣 2.發行設定檔的建立綁定Visual Studio |
IIS 伺服器事前準備 | 1.架設SSH server 2.建立IIS站台並activate即可 |
1.IIS需做一連串設定 2.建立專案的發行設定檔 |
人工部署 | 直接將新檔案透過SSH上傳至IIS Server | 使用IDE一鍵部署 |
自動化部署 | 使用SSH腳本將檔案上傳至IIS Server | 在MSBuild建置時給予deployOnBuild參數並指定設定檔 |
看完這張表可以發現,雖然Web Deploy處理常式的初始設定比較麻煩,但是優點卻多SSH很多,但可能有些人對於Web Deploy(自動化)部署流程一知半解,例如下了要建置後部署的參數但卻沒指定部署設定檔,導致無法部署成功等等的問題,故在此說明如何使用Web Deploy部署至IIS Server,以及在Jenkins上自動化部署的方法。
開啟你的ASP .NET專案->右鍵->發行(先確認專案與要上傳的IIS站台集區的.NET Framework是否吻合)
輸入Server 位址、站台名稱及使用者帳密,點擊驗證連線,若出現綠色勾勾,代表權限已通過,儲存,設定檔就建立好了。
儲存後就會出現剛剛的設定檔,點擊發佈,即可完成人工部署
建立好設定檔後,會在發佈的專案\Properties\PublishProfiles\裡產生設定檔,將此設定檔上傳至版控,並在專案Jenkins的MSBuild區塊加入以下幾行參數。
如此就可以很方便的進行持續部署的功能,透過Web Deploy就不需要擔心新版Web沒上傳到IIS Server等等部署失敗還摸不著頭緒的問題了。