TFS:Team Foundation Build 2010(生成自動化) 1

 

第22章 Team Foundation Build 2010 Part 1

Professional Application Lifecycle Management with Visual Studio 2010 學習

我們將介紹Team Foundation Server(TFS)生成自動化的能力——提供了什麼功能,如何使用,如何定製以適合組織需要。

除了版本控制,自動化生成是你可以用來改進軟件質量第二重要的事情。一旦程序的各個部分組合起來了,你能知道程序是否可以運行、程序應該是什麼樣子嗎?將程序的各個部分組合起來通常是一個複雜的、耗時的、容易出錯的過程。如果沒有自動生成,需要處理很多東西以生成一個應用程序。這個事情通常安排給團隊中瞭解細節的一兩個人。

軟件組件的集成是個困難的事情。團隊之間以獨立的方式工作,對系統的其他部分功能做着各種假設。只有在各部分集成在一起,這些假設才能得到測試。如果你早早的、經常的進行集成,開發過程中這些集成性問題才能儘早的得到測試——因此也降低了修復各種問題的成本。

對於參與項目的每個人,運行最新生成的副本應該是很平常的事情。只有這樣你才能知道軟件是否可以運行,軟件是什麼樣子。只有這樣,你的產品才能時刻準備着。一個定期的、自動化的生成是團隊的心跳。

文章轉自:www.icommon.net

21.1 Team Foundation Build

生成自動化對於保證軟件開發過程的質量如此重要,以至於TFS 2010提供生成服務作爲核心平臺的一部分。

TFS的生成服務提供一個企業級的、分佈式的生成平臺。生成服務可以根據生成事件提供通知,例如發送Email給團隊成員。VS 2010內置的生成通知工具可以提供消息式的通知。

TFS提供幾種觸發生成的方式。可以手動請求觸發、或者通過TFS的簽入觸發或者按照特定的計劃觸發。TFS 2010還引進一個新的概念叫做封閉簽入。封閉簽入指提交的代碼與版本控制中的代碼合併後必須成功通過生成後才予以簽入。

TFB也有一個詳盡的基於.NET的API。你可以與生成服務深度集成。通過與生成事件結合,可以對平臺高度擴展,集成你能想象到的任何額外系統。

21.2 TFB 2010的改變

21.2.1Windows Workflow 4.0

對比老版中使用的MSBuild,WF4.0可以從上往下閱讀代碼,能夠跨機器並行工作,並且有一個好的設計時的用戶體驗。

21.2.2封閉簽入

頻繁的自動生成是改進軟件開發過程的一個最重要手段之一。其中的關鍵是確保代碼庫中的最新代碼總是可以編譯和運行的,並且通過了所有相關的自動化測試。一旦你有一個生成,團隊必須確保它是沒問題的。

對於大型團隊,這可能是一個問題。想象一個好的開發人員簽入代碼造成破壞生成的機率是一年一次。如果你有500個人開發代碼庫,你可能每天都要破壞一兩次生成。在這種情況下,將生成配置成封閉簽入是有幫助的。

封閉簽入指,不是將代碼簽入到版本控制,而是將代碼提交作爲一個擱置集。然後生成服務器獲取最新的代碼並與擱置集中的改變合併再執行生成。如果生成成功,擱置集中的改變將自動簽入。

21.2.3私有生成

爲了防止簽入的代碼導致生成失敗,最好是在簽入代碼前獲取一下最新代碼,然後在開發者機器上生成和測試,確保代碼以預期的方式工作。然而有時候開發者只是想測試一下所修改的代碼和代碼庫中的代碼放一起後是否能運行,並不想將修改的代碼簽入代碼服務器。通過私有生成,你可以將最新的代碼庫與你創建的擱置集合並進行生成。

私有生成類似於封閉簽入,只是代碼不會自動簽入。

21.2.4生成控制器

在TFS2005和TFS2008,生成是由一個機器執行的——生成代理。不允許將生成指派給一批代理或者由多個機器執行生成。TFS2010通過引入生成控制器解決了這個問題。

生成控制器指派給項目集合,一個生成定義默認一個控制器。生成控制器可以指派多個生成代理,默認情況下,控制器將產生的新生成交給代理池中最不忙的代理。

21.2.5生成通知

安裝VS的時候將自動安裝生成通知程序。這個程序運行在系統通知托盤,可以進行配置以通知各種生成事件(例如生成成功或失敗)

21.2.6暴露一些屬性以方便常見的定製

新的基於WF的生成允許在用戶界面設置一些屬性來自定義生成,在創建生成定義或將一個新的生成提交到隊列的時候。以前一些需要通過對生成過程進行二次開發才能實現的效果,現在只需要設置一下屬性即可(例如自定義生成號的格式)

21.2.7與Symbol and Source Server集成

TFS 2010默認的生成過程包括一個步驟,對源代碼進行索引並將符號(Symbol)發佈到組織中一個符號服務器上。

符號服務器是一個文件共享的地方,用來存儲可執行文件的符號。VS可以根據這個服務器的細節進行配置。當debug代碼存在或者使用高級的歷史debug功能時,VS能夠直接將你帶到二進制文件相關的源代碼版本中,而不管你本地代碼的版本是什麼。配置的時候需要將符號服務器的細節作爲過程參數添加到生成配置。

 

21.2.8加強的生成刪除選項

在TFS的以前版本中,當生成刪除的時候,所有的生成細節包括二進制文件就都刪除了。在TFS 2010,現在有幾個選項,設置當生成刪除的時候都刪除哪些數據。

21.3 Team Foundation Build架構

當一個生成觸發的時候,應用層通過生成服務的web service對生成控制器服務器發出一個請求,請求將這個生成添加到隊列。 然後控制器下載該生成的基於工作流的過程並執行。默認情況下,該生成將分配給控制器代理池中下一個可用的生成代理。

生成代理這個機器實際上執行了所定義的生成工作流中的主要部分——包括調用MSBuild執行實際的編譯步驟。然後將生成結果(即,你的可執行二進制文件或Web站點)存放到一個文件夾,並將符號發佈到符號服務器(如果配置了的話)。

生成控制器和生成代理也行位於TFS應用層的同一個機器。然而,由於生成通常涉及高強度的CPU和硬盤I/O使用,至少生成代理應該位於另一個服務器以避免影響TFS主程序的性能。如果你將生成代理運行在TFS同一個機器,當生成使用某些高強度的診斷數據蒐集器的時候會引發一些性能問題。

實際的生成細節(例如生成名稱、生成什麼、什麼時候生成、如何生成以及如何處理生成結果)都在生成定義中配置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章