現在越來越多人在談敏捷、Scrum 開發,所謂的敏捷並不是指開發的速度變快,而是能快速的反應客戶的需求或 Bug,以期在一個 Sprint 衝刺內交付一個可以給客戶測試的 UAT 版本,如何在VSTS做到 CI & CD?,詳細可參考文章
前言
現在越來越多人在談敏捷、Scrum 開發,所謂的敏捷並不是指開發的速度變快,而是能快速的反應客戶的需求或 Bug,以期在一個 Sprint 衝刺內交付一個可以給客戶測試的 UAT 版本。
為了快速反應客戶的需求、修改、測試、建置、上版的過程中,除了程式需要人員來修改外,其他的動作若無法自動化 (Continuous Integrated, CI & Continuous Delivery, CD) 來進行的話,便無法發揮敏捷開發的最大價值。
今天呢,我們就在 VSTS 上,結合 Microsoft Azure 來做到 CI & CD 這件事,將一個 VSTS 上面的一個網站透過自動化建置 Build 之後,自動化的佈署到 Azure 的既有的 WebSite 上。
環境
在環境的部分,首先,在你的 VSTS 中準備一個 ASP.NET 專案,並建立一個 Build,在觸發程序使用『持續整合- 建置每次簽入』
來源設定請將『原始檔控制資料夾 』與 『組件代理程式資料夾 』設定目前要自動建置的專案就好。
組件預設值請選擇『將組件輸出複製到伺服器』
接著就是請備妥一個 Azure 的 WebSite,空的 WebSite 執行起來應該如下:
然後到 Azure Portal 中你的的 WebSite 可以從原始檔控制中進行佈署,如下:
它也可以支援從 Github、CodePlex、Dropbx 等.. 甚至從您本機端的 Github 原始檔控制提供者進行連續佈署。
選擇 Visual Studio Online (其實現在叫做 VSTS 還來不及改名)
接著輸入您目前 VSTS 的使用者後按立即授權。
點選立即授權後,會談出一個確認授權的對話視窗,點選 Accept 如下:
確認完畢後,會再彈出一個讓你選擇要佈署的原始檔儲存機制來源是哪一個,請選擇正確,否則佈署不會成功。
這時回到你的 Visual Studio 組建定義畫面中,應該會多出一個 『testWebSite20151214_CD』的 Build 組建定義
VSTS 的畫面應該也是一樣,如下:
進行自動化佈署 CD 作業
這裡我們真的要開始進行實際的 CI & CD 的演練,筆者使用一個 ASP.NET MVC 5 的專案,我們使用這個專案來做一些簡單的修改,因為現在這個 VSTS 的原始檔控制已經與 Azure 的 WebSite 整合,所以現在在 WebApplication1 這個應用程式內所作的修改,簽入後除了都會觸發 testWebSite20151214_CD 這個 Build 之外,還會將這個 WebApplication1 的輸出結果佈署到我們的 testWebSite20151214 這個 Azure 的 WebSite 上面。
原本的 WebApplication1 執行如下:
我們加入一個名稱為 AspNet 的 Action,並加入一個 View
並在 _layout.cshtml 裡加入一個 ActionLink
在本機執行沒有問題後我們執行簽入,簽入後會立即在 Visual Studio 看到一個名稱為 『testWebSite20151214_CD』 的 Build 進入到佇列中。
你也可以在你的 VSTS 裡看見這個 Build 在執行中
Double-Click 後也可看見『testWebSite20151214_CD』 的 Build 的執行狀態
執行完畢後會顯示 Build Succeeded
這時,我們只要重新整理一下,我們可以看見 testWebSite20151214 這個 WebSite 已經是最新的,上方有我們剛剛加入的 ASP.NET 頁籤。
結語
在不搭配 Release Management 的情況下,Microsoft Azure 的解決方案經可以做到基本的 CI & CD ,因此我們可以在 UAT 階段時持續的交付給 User 來進行測試,除了程式碼修改外,其它都在自動化情況下完成的,不需要人工的介入,可完全避免人工過版可能的失誤。如果是 Production 的過版可能需要簽核時,可能就須使用 Azure 上的 Release Management。
簽名:
學習是一趟奇妙的旅程
這當中,有辛苦、有心酸、也有成果。有時也會有瓶頸。要能夠繼續勇往直前就必須保有一顆最熱誠的心。
軟體開發之路(FB 社團):https://www.facebook.com/groups/361804473860062/
Gelis 程式設計訓練營(粉絲團):https://www.facebook.com/gelis.dev.learning/
如果文章對您有用,幫我點一下讚,或是點一下『我要推薦』,這會讓我更有動力的為各位讀者撰寫下一篇文章。
非常謝謝各位的支持與愛護,小弟在此位各位說聲謝謝!!! ^_^