續上篇,[TFS 2015] 實作 Build vNext + Release 自動部署至內部網站
我使用了 Build vNext + Release 將網站部署到了測試環境,缺少了網站所需要的資料庫,這裡我整理了一些手自動部署的方法
自動部署資料庫,要看團隊內的開發流程不適合使用,使用時要注意一下
續上篇,[TFS 2015] 實作 Build vNext + Release 自動部署至內部網站
我使用了 Build vNext + Release 將網站部署到了測試環境,缺少了網站所需要的資料庫,這裡我整理了一些手自動部署的方法
自動部署資料庫,要看團隊內的開發流程不適合使用,使用時要注意一下
日前,要使用 SpecFlow 描述需求,被測目標會回傳多筆訊息,以往我驗證多筆資料是使用 \r\n
現在...我改用 Doc Strings
dotCover 在 Jetbrains 旗下,是用來產生測試涵蓋率報表的工具,授權方式已經和 ReSharper Ultimate 綑綁在一塊,它有免費試用;若你需要使用網頁來呈現報表, 或許你可以考慮 dotCover,官方連結:https://www.jetbrains.com/dotcover/?fromMenu
dotCover 提供 Command Line 的支援,整合自動化建置這一關是沒問題的,不過我在實作的時候仍然有碰到一些問題,不用怕 dotCover 也有技術支援,回應速度算蠻快,問題很快就解掉了。
前面幾篇介紹使用 SpecFlow 和 Pickles 指令碼產生 cucumber/gherkin 的測試報表,請參考:
https://dotblogs.com.tw/yc421206/2016/04/25/specflow_pickles_live_document
https://dotblogs.com.tw/yc421206/2016/04/26/specflow_pickles_live_document_command_line
今天,我要搭配 TFS 2015 Build vNext 自動產生測試報表,以下是我的演練。
PS.雖然說,手動產生測試報表已經完成了,但還是花了很多的時間調整指令碼路徑的處理。
續上篇,上篇使用了 Pickles 產生出 Feature 報表,這篇要介紹 SpecFlow 報表,SpecFlow 本身就內建報表,這個報表比較適合開發人員,請參考:
https://github.com/techtalk/SpecFlow/wiki/Reporting
這篇提供了我寫的 Batch 檔,若對指令還不熟的,可以從參考一下。
以往,我都是使用用 NuGet Package Explorer 手動部署到公司內部的 Nuget Server,也用過 Nuget Packager,這兩種方法都不錯,只是無法自動地跟我的測試整合在一塊

TFS 2015 Build vNext 裡面有打包 Nuget Package 的步驟,Release 有部署 Nuget Package 的 Task,新版的 TFS 2015 讓我的自動化部署 Nuget 變得很簡單,有在使用 Nuget 的夥伴,可以參考我的設定。
Pickles 所產出的報表用來溝通,個人認為比 SpecRun 來的友善、清楚,SpecRun 的報表比較偏向開發,有在使用 SpecFlow 或是 cucumber/gherkin 語言開發的夥伴,你也可以試試看
前半段, CI (Continuous integration) Server 處理:程式碼版控→自動化測試
後半段, CD (Continuous Delivery) Server 處理:自動化部署→自動部署到測試機→簽核(QA), 用來完成自動化部署的動作 ,TFS 2015 Update 2 才把 Release 整合到網頁。
Release 就是 CD
接下來的演練, 我仍然要發行網站應用程式到內部環境,除了上篇的做法之外,我們也可以用 TFS 2015 Update 2 才加入的 Release 新功能。
以往手動 WebDeploy 部署網站,就會套用 Web.config Transform,為了自動化必須要捨棄手動 WebDeploy,我改用 TFS 的 MsBuild Arguments,發行網站。
這會衍生出另一個問題, MsBuild 並不會套用 Web.config Transform,拖了好久今天才花了一點時間,找出解決方法。
以往手動部署網站我習慣用 Web Deploy,就是在網站應用程式,按右鍵→Publish。
但,我在目前的 TFS Build vNext 版本找不到這樣的部署步驟(只有 Azure),於是花了一天的時間試出堪用的替代步驟,所以嚴格來說這不算是真正的 WebDeploy ,目標環境也不需要安裝 WebDeploy(WMSvc)。
若有更好的做法,也請你跟我說