Visual Studio Online構建自動化新特性
英文原文:New Build Automation Features in Visual Studio Online
微軟完全重寫了 Team Foundation Server 和 Visual Studio Online 的構建服務器,新工具不再使用大量基于 XAML 的 Windows 工作流文件作為構建定義。
這次重寫主要解決以下問題:
- 如果不學習工作流基礎知識,則無法添加構建后自定義腳本
- 構建服務器不支持非 Windows 平臺,不能用來構建 iOS app
- 要想構建 Java 程序,必須學習 MSBuild 和另外一項技術
- 只有最新版 Visual Studio 才能編輯構建模板
- 大量惱人的 XAML。新的構建定義不再使用含有大量 XAML 的 Windows 工作流文件。
- 不能通過 Web 頁面或在非 Windows 機器上編輯構建定義 </ul>
- 不再創造一個新的構建/自動化領域特定語言。如果你正在使用 MSBuild、Ant 這些構建工具,那么你可以繼續使用他們。
- 支持非 Windows 平臺。
- 構建系統必須具有良好的擴展性。
- 不應該隱藏日志記錄 </ul>
為了解決這些問題,微軟的新構建服務器遵循了這些關鍵原則:
Visual Studio Online 中的新特性
可以直接在瀏覽器中創建并修改構建定義,從此不需再為調整構建文件而打開沉重的 Visual Studio。
構建定義經常需要訪問不想告知他人的機密內容,例如產品密鑰、安全 token,現在你可以在構建定義中使用加密變量保護這些機密。
構建定義不再被直接定義為一個分支。你創建定義后,可以使用構建定義標記將被構建的分支,每一個分支可以擁有它們自己的觸發器(CI,daily 等)。
當使用諸如 git-flow 的工作流時,最終你往往會創建一堆特性分支。在這個新模型下,你可以在構建定義中使用通配符。舉個例子,你可以定義:任一匹配“feature-*”的分支將自動被編譯并運行測試,而“qa-*”分支只進行每日構建。
構建工具可以直接運行 PowerShell 腳本。這對 Azure 來說尤其重要,Azure 的部署大部分由 PS 文件來處理。構建過程能夠檢查你的 Azure 訂閱帳號,確保部署程序運行在正確的上下文中就變得更容易了。
一旦部署了一個網站,構建自動化可以啟動一個“快速性能測試”,亦即基于 Visual Studio/TFS 中的負載測試功能,運行一個初步的冒煙測試來確保部署成功。
跨平臺和測試
除了在 OS X 上構建之外,現在可以在 OS X 上的構建自動化中集成測試程序,生成一個 JUnit 格式的測試結果,繼而被導回到構建服務器中并顯示。
構建自動化也支持 Xamarin 測試云,你可以選擇一些測試細節,例如:從 Visual Studio Online 直接選擇你感興趣的設備/操作系統。
VSO 支持多種單元測試框架。
跨平臺構建代理基于 Node.js 和 xplat。
可擴展性
以環境變量的方式暴露關鍵信息,例如:構建版本號。任何腳本語言都可以讀取環境變量獲得這些信息。
當新版本構建工具發布的時候,構建代理可以自動升級。
開源所有開箱即用的任務,尚未決定是否允許第三方為 OOB 貢獻代碼。
在 Windows 平臺用 PowerShell 編寫任務,在其它平臺上用 xplat 和 JavaScript 編寫。
體系結構
新的構建服務器依然支持基于 XAML 的構建定義。
構建代理移除了一大敗筆——單一的物理控制器。
代理被分為許多池,每個池被配以集合并受到池級保護。消除了管理個別構建代理的必要性。
安全性
目前的構建代理運行在一個共享進程中。這意味著一旦構建失敗將影響到整個構建代理,甚至一個打開的文件句柄都會讓整個過程終止。
在新構建代理模型中,每個構建運行在自己的進程下。當一個構建完成時,進程被完全銷毀,并創建一個新的進程來執行下一個構建。
在大多數構建系統中都有一個相對未知的安全黑洞——“單元測試后門”。開發者可以通過寫單元測試來捕獲敏感信息,然后用于獲取嚴格保密的信息。為了幫助開發者減輕這方面的風險,構建代理綁定了一個時間限制 token,一旦構建完成立即失效。
想了解更多有關構建自動化新特性的信息,歡迎查看 Channel 9 的現場演講《Team Foundation Server 和 Visual Sdudio Online 中的新一代構建自動化》。