Team Foundation Server 2015 及 Visual Studio Online 在團隊開發、敏捷、DevOps、自動化建置及佈署的新功能

各位夥伴們,

Visual Studio 2015 在團隊開發、敏捷專案、自動化建置、持續發佈及 DevOps上有哪些新功能及進化呢? 本文將做一介紹。(以下畫面以 Team Foundation Server 2015 RC 版本及 Visual Studio Online 說明) 

 

    如何能成為有效率的開發團隊呢? 尤其是要了解團隊進度、與團隊成員溝通協調進度、加速事情解決...等。每天無止盡的開會模式並沒有辦法讓你的團隊達到真正的敏捷,而是需要去了解有哪些工具是能夠替你提升效率、加速團隊合作進行。Team Foundation Server (TFS) 及 Visual Studio Online (VS Online) 中所提供的工具能夠替你們團隊做到,提供了各種進階功能,讓團隊可以處理各種規模及複雜度的專案!

1. 敏捷專案管理 (Agile project management) 的部份

先前在 Visual Studio Online 過去幾個月的改版都已上線,各位可以關注其網站了解發佈哪些新功能,這些功能也將會包括在 TFS 2015 中 (或於未來 TFS 2015 Update 中更新),簡單整理 Team Foundation Server 2015 & Visual Studio Online 支援了,

Kanban board showing fields added to Bug cards

敏捷開發團隊多會利用工具及技術協助開發,並將跨平台程式碼整合至 Visual Studio Online 或是 Team Foundation Server 之上,團隊合作便能更加流暢,讓你的團隊能追蹤即時訊息。

2. Java 開發團隊支援更完整

透過 Team Explorer Everywhere (TEE) 套件,Java 的開發者也可以在 Eclipse 中存取 Team Foundation Server/ Visual Studio Online,進行版本管控 (Version Control)、工作單管理 (Work Item)、及建置 (Build)。TEE 套件已發表多年並提供下載,但在後續的版本也改進許多,包括支援分散式 Git 版本管控、透過 TFS 2015/ VS Online 所提供的 REST API 及 Service Hook 的方式來整合你們團隊既有的工具,例如與現有的工作單系統、看板及專案管理工具、測試工具、自動化建置工具整合,如此你們團隊就可延用原本的工具,但也享用到 TFS 及 VS Online 所提供的其它功能,讓團隊管理上更容易。

相關資訊:

3. 跨平台的 Build 引擎 (Build V.Next) - 持續整合及持續發佈的基礎

Build V.Next 目前在 VS Online 中雖是 Preview 版本 (2015/5月),但在建置 (Build) 的功能上,令人為之驚豔。支援各種平台及技術的建置 (.NET/Java/XCode/Android/Xamarin/Linux script/JavaScript ....,如下圖),也可以自訂建置的流程及步驟,包括執行測試、執行 script、app 打包及簽章等動作,並且即時了解每次建置的狀況,而且是 Web 操作介面,讓你更自動化你的建置流程,達到持續建置 (Continuous Integration, CI) 的目的。更完整的說明,請參考 - blog post

簡述如下:

  • 建置 Java 專案 – 支援 Ant, Maven, Gradle
  • 執行單元測試並發佈成果 – 可以使用常見的測試 Framework – NUnit, MSTest, JUnit, 等,測試結果將回報到 VSO/TFS,並且包含在 Build 報告中。
  • 支援 Xamarin 專案 – 在 Build 的步驟中,支援建置 Xamarin 開發的 iOS/Android app,也支援執行 Xamarin’s Test Cloud 測試,未來可將 Test Cloud 的測試結果回傳到 VSO/TFS。
  • 自動更新 Build agents (Auto updating build agents) –  TFS / VS Online 將自動發佈 agent 更新,這不會更改任何的工具 (例如 compilers 編輯器),就只是更新 build automation agent。
  • 整合 XAML builds – Build.vnext definitions and the earlier XAML build definitions now share the same Build tab and can coexist happily.

此外,利用 Team Foundation Server 2015/Visual Studio Online 提供的 REST API 整合來自外部 (例如 GitHub) 的程式碼,團隊也能利用新的跨平台建置 Agent 在非 Windows 裝置上進行建置,例如在 Linux 上執行建置、或是在 Mac 上建置,為了 iOS 及 OSX 平台的應用。

佈署 (Deployment) - 當建置 (Build) 完成後,將應用程式佈署到目標環境,在 TFS 2015/ VS Online 的一些新功能如下,

    • 佈署到雲端或本地 – You can deploy applications both to cloud and on premises environments.
    • 自動化設置雲端環境 (Auto-provision cloud environments) – Using Azure, you can automatically provision the hardware as part of the deployment process.  Ultimately we’ll enable this on prem as well by bringing it together with our existing lab management capabilities on top of SCVMM.
    • 支援佈署到其它平台 – 可將佈署工作 (deployment tasks),搭配 Chef 或是 Powershell DSC on Linux 達到跨平台佈署
    • Docker 支援 – 可使用 Docker 來佈署

image

clip_image002

 

4. Release Management 自動化佈署/過版的新功能

   

Dev & Ops 有一致的發行、佈署機制,以利溝通並降低出錯風險 - 當你的團隊經常有建置及佈署的需求時,流程的一致性就會非常重要。如果你還在使用人工進行過版那就太花費時間及精神了。Release Management 提供的佈署範本及元件能夠讓你依據 template 做修改,並觸發 Release 的流程讓整個發佈流程更自動化及完整。

 

在 Visual Studio 2013 & TFS 2013 已提供 Release Management 的功能了,但在後續持續釋出多項 Release Management 功能更新,VS Online 中的預覽版本將會在今年夏天登場,本地端的 TFS 2015 會於 Update 1 更新加上這些。Release Management 更新將會包括新的 Web 介面並且可與最新版的 Visual Studio Online /TFS 建置系統做整合,也可以與 Jenkins 建置工具整合,並透過 Chef, Docker, Azure Resource Group 來佈署,將一些新功能說明如下, 

  • 在瀏覽器中進行 release management 管理 – 如下圖管理 Release 定義

clip_image004

  • 多個環境的管理, 如下圖 (Orchestrate across multiple environments) – release 定義 (release definition) 用來描述一群環境、佈署的順序(deployment sequence)、及一系列的驗證 (a set of validations,例如自動化測試) 及審核,在每個佈署階段中執行。讓你可以管理更新的流程,從簽入程式碼到佈署應用程式到上線環境,擁有可控性。
  • 更簡單建立佈署的 pipeline – 整合了新一代 Build 引擎 (Build V.Next),如本文前面提到,建立佈署的 pipeline、加上自定的步驟更容易。

clip_image006

  • 稽核及可追蹤性 (Auditing/Traceability) – All release and deployment operations are traced and audited – providing a clear picture of what succeeded and failed, who approved deployments and who made changes to the release definition and what changes were made.  We also provide and easy way to see the state of each environment and what software is deployed on it.
  • 開放架構 (Open architecture) –  Release Management 除了搭配 VSO/TFS 的版控或建置功能,也可搭配其它的工具,例如: SVN, Jenkins ...

Release management (發行管理) 提供團隊自動化過版及追蹤功能,改善各角色間的溝通,讓軟體能快速、簡單、可靠、重複、並符合稽核的要求順利完成部署。

相關影片&文章:

 

發佈時驗證 (Release validation)

在 DevOps 的環境中,測試扮演重要角色。在建置 (Build) 中的步驟,執行自動化單元測試,並回報結果,也可以針對要佈署的應用程式,進行適當的驗證,在  TFS 2015 及 VS Online 除了強化功能外,也能更容易進行這些驗證。說明如下,

  • 功能測試服務 (Functional testing service) – 將有一新服務,可搭配 release management 自動佈署 test agents 及測試。它將執行這些測試,並回報給 TFS/VSO。這些功能測試可以是 VS Coded UI tests, Selenium tests, Appium tests ... 等,測試的結果可以用在佈署的 pipeline 中,以達到自動化驗證佈署 (automatically validate deployments)。
  • 負載壓力測試 (Load tests) – 支援在 release management pipeline 中執行負載壓力測試,因此你可以驗證效能、延展性及可靠度,你可用來判斷該版本程式是否可以發佈,達到自動化過版的目的。VS Online 的雲端壓力測試服務最近也強化了,可支援到最多 200 cores,可發動大量的負載。
  • 測試分析 (Test analysis) – 一個新的測試分析功能,在 test hub 中,你可以檢示或調查測試結果,歸檔 bugs 等動作。從你的建置/發行報告中之測試結果,可以直接連結。

clip_image001[10]

 

擴充及整合 (TFS & VS Online Extensions)

在 TFS & VS Online 中,已有 REST API, OAuth, Service hooks 的功能,讓整合及擴充功能更容易。你可以看此了解 VS Online extensions on our website. 這些 REST API 及擴充功能,原本只有 VS Online 支援,現在TFS 2015 也將支援。

在 //Build/ 大會中,我們展示了一個新的擴充機制 (new extensibility mechanism) 在 VS Online 的 Web 介面中,讓 3rd party 可以 plug in hubs, controls, actions ...等。我們展示了一個範例,一個很 cool 的團隊行事曆,完整使用 VS Online 的擴充功能及 API (範例程式碼在此 : code available,更多範例參考: samples)

clip_image002[5]

這個新的擴充機制 (extensibility mechanism) 目前是 “private preview” 階段,最終我們計畫將有一  gallery/marketplace 可供方便取得及安裝這些擴充 (extensions),想了解更多可參考: VSO integrate documentation。現在這個 UI 擴充的功能 (UI extensibility capability) 只在 VS Online,未來也會在本地端的 TFS。

參考 Blog 文章,了解更多 TFS 2015 & VS Online 新功能。

 

總結: 往開放及跨平台前進! Agile + DevOps for ALM Teams

• TFS 及 VS Online 更完整支援各種平台及專案技術 - 不論是使用本地端 Team Foundation Server 2015 或是雲端版 Visual Studio Online,在敏捷開發團隊及 DevOps 的支援更完整。

• Build V.Next 跨平台的建置引擎: 自動化建置系統並且在瀏覽器上定義建置流程、匯入舊版建置專案、支援 Ant, Maven 或 Gradle 並且能夠在 Windows、Linux 及 Mac 上執行建置。

擴充及整合: 提供 REST APIs 及 Service hooks 讓開發人員在任何情境都能使用 TFS/VS Online,而且 Service hooks 能與既有服務結合 提供一個機會讓您可以與既有的系統介接(如:Jenkins、Trello、Campfire ...),不必改變工作流程。或者建立一個即時通知機制,當某個事件發生時,會主動發出通知,比方說: 完成建置、提交/簽入或是項目變更的時候,會送個通知到你已經訂閱這個動作的服務上。