2011-06-06 117 views
5

我已經使用TB 2010爲我們的產品中的多個功能設置了多個構建定義。 我想知道如何使用現有的定義來創建「主構建」。 我將更具體: 在MSBuild中,我可以使用target來調用另一個MSBuild項目。這樣我可以鏈接構建定義以獲得最終的主構建腳本。 如何在結核病2010年做到這一點。 注意:我想使用WF4 ...不是MSBuild!Master Build with Team Build 2010

謝謝

回答

4

您當然可以編寫一個工作流自定義活動,以排隊構建定義的構建。該活動應該是一個代碼活動並接受您想要排隊的構建定義的名稱。

要編寫與您的TFS服務器交互的代碼以排隊構建,您可以使用Microsoft.TeamFoundation.Build.Client程序集的API。另外,Jim Lamb發佈了關於爲構建here創建自定義活動的博客。

在細節,你的代碼應該做以下步驟:

  1. 創建TfsTeamProjectCollection對象連接到您的團隊項目集合。
  2. 獲取IBuildServer對象。這是主要條目。從這裏你可以得到構建定義,創建一個構建請求,排隊構建等

實際上,我驚訝的是,沒有爲2010版本沒有例子,當我試圖尋找「TFS編程排隊|創建一個構建「。我可能會在這裏發表博客。

但有一點需要注意,即從您的自定義活動排隊的構建將由構建服務帳戶排隊,因此您需要確保此帳戶被授予正確的permissions以排隊構建。默認情況下,當它被添加到TFS構建服務帳戶組時,我認爲它沒有。

UPDATE:

埃瓦爾德·霍夫曼剛剛寫了一篇關於TFS系列構建,其中一個討論有關從自定義活動做模擬。它非常適合你的需要:

http://www.ewaldhofman.nl/post/2010/05/28/Customize-Team-Build-2010-e28093-Part-9-Impersonate-activities-(run-under-other-credentials).aspx

我還發現,泰勒Lafrine在博客程序於2009年在他的崗位創建構建回:

http://blogs.msdn.com/b/taylaf/archive/2009/12/04/introducing-tfs-impersonation.aspx

希望它能幫助。

+1

非常感謝!我會試試這個 – monkzen 2011-06-12 17:40:30

+0

@Duat Le你知道我可以做什麼,當我排隊很多建立一個又一個,每個依賴另一個?我的問題是,構建異步排隊,但我想等待構建。有任何想法嗎? – Rookian 2012-02-15 09:33:31

+0

你當然可以阻止你的線程隊列的構建和等待,直到構建完成。您需要的是獲取IQueuedBuild對象,並等待狀態屬性變爲「已完成」或「已取消」。請注意,構建請求可能會延期,因此請密切關注,如果構建請求被推遲,您可以選擇等待或取消。 – 2012-02-22 02:11:59