2013-07-25 82 views
3

我該怎麼做或在TFS 2012中創建構建定義的層次結構?如何將多個TFS 2012構建定義鏈接到一個構建定義

我目前擁有一個調用多個子腳本(.cmd)的主構建腳本(.cmd)。
我想將其遷移到TFS構建系統並維護層次結構。

我似乎無法弄清楚這是否可以使用TFS 2012構建系統。

這裏就是我說的: MasterBuildScript.cmd 通話componentscript1 通話componentscript2 通話componentscript3 呼...呼 常規包裝爲所有組件

componentscript1.cmd 構建解決方案componenta1 構建解決方案組件a2 構建解決方案組件a3 ...

componentscript2.cmd 構建解決方案componentb1 構建解決方案componentb2 構建解決方案componentb3 ...

多個組件......

有沒有辦法與標準TFS 2012生成定義來做到這一點? - 布魯斯

+0

確定可以通過編寫自定義代碼/活動來從主構建定義中調用多個構建定義。但是,你到底在想什麼?如果你的CMD文件只是編譯解決方案文件,你爲什麼要繼續使用它們?你正在做這些孩子腳本來照顧依賴或其他?什麼情況迫使你保持多個構建定義?詳細解釋! – Isaiah4110

回答

0

有沒有辦法做到這一點,而不做任何自定義編碼。但是,您必須對構建過程模板進行小幅度的增加。這不使用代碼,它使用Windows Workflow Foundation。

本質上,您需要爲您當前擁有的每個.cmd構建腳本設置TFS團隊構建定義。一個用於主構建,一個用於每個組件構建。這裏涉及的真正工作是將.cmd腳本轉換爲TFS構建定義。然後,要自動排隊「子」構建,您可以編輯主構建定義的流程模板,並添加一個「InvokeProcess」活動 - 這可以讓您作爲構建過程的一部分外出到命令行。您可以使用命令行實用程序TFSBuild.exe來啓動「子」構建。 http://msdn.microsoft.com/en-us/library/aa337622(v=vs.90).aspx

我已經使用了類似的東西,在過去的我有一個爲我的核心集程序集構建。然後,該構建會啓動所有依賴這些程序集的構建。

+0

是的,您可以通過使用InvokeProcess並調用CMD腳本來做到這一點,而且我知道這一點。但是你提到的解決方案有很多缺點。比方說,你創建了一個只需調用CMD腳本的構建定義,那麼你完全不能控制TFS發生的事情。你正在產生一個新的流程,它正在運行。如果你想停止正在運行的構建,那麼如果你停止在TFS中構建它不會阻止它。批處理文件仍然會運行。這只是一個例子。 – Isaiah4110

+0

這就是爲什麼我想知道他的根源問題,然後提出解決方案。只是從TFS運行CMD腳本構建def並不是最好的解決方案。 – Isaiah4110

+0

從構建定義中調用現有的.cmd腳本並不是我所暗示的。你是對的,這是一個可怕的想法。重新閱讀我的迴應我可以看到你如何解釋它。這些.cmd腳本需要轉換爲TFS構建定義,它們執行與原始.cmd腳本相同的工作。 InvokeProcess活動應該只用於通過TFSBuild.exe啓動「子」構建。 –

相關問題