2015-06-15 58 views
0

我最近開始在使用MSBuild管理我的任務的門控簽入期間自定義我的構建活動。它工作比較好。 但問題是:任務工作流程完全基於以前關於任務執行時間到optime並行性能的知識。下面是我的工作流的恢復版本,這樣你就可以明白這個問題如何處理TF Build 2012中的多個常見依賴項?

  • 兩個主要目標:執行一些測試和驗證數據庫遷移
  • 要執行的測試,我來構建解決方案,建立數據庫項目和發佈數據庫
  • 驗證數據庫遷移我還需要構建和發佈數據庫(不能與測試執行時相同)並需要做一些「額外的工作」。

爲了優化我的工作流程,我想同時運行解決方案的構建,「額外的東西」和數據庫的構建/發佈,但我不想混用不必要的依賴關係,比如數據庫遷移等待解決方案的構建或測試執行等待「額外的東西」。

在的MSBuild和WWF4我只知道如何在一個回合,然後執行另一套依賴執行所有依賴於並行活動...

是否有這樣做的更好的辦法?我的意思是,定義工作流程以便自動解析和優化依賴關係。

P.S:我使用的是2012年的TFS

UPDATE: 我做了一個測試建立我的項目解決方案的兩倍並行看看會發生什麼。發現一個MSBuild節點在嘗試構建我的解決方案之前等待另一個完成,然後說它是最新的。例:

<Project> 
    <ItemGroup> 
     <Project Include="MyProject.sln" /> 
     <Project Include="MyProject.sln" /> 
    </ItemGroup> 

    <Target Name="Build"> 
     <MSBuild Projects="@(Project)" Targets="Build" BuildInParallel="true" /> 
    </Target> 
</Project> 
<!-- When I check the build log it says 
    1> Project is building MyProject.sln (2) ... 
    1> Project is building MyProject.sln (2:2) ... 
    2> Building with tools... 
    2> ... 
    2:2> Building with tools... 
    2> ... 
    2> ... 
    2> ... 
    2> Done building 
    2:2> Target ... skipped because it was previously built successfully 
    2:2> Done building 
--> 

這是一個期望的行爲,但是當我試圖依靠這使我的工作流程建設,我的項目,同時內置兩次,給了我很多的錯誤。

回答

0

將所有集成測試移至部署環境並在構建過程中不執行它們可能會使您受益。首先,構建服務器適合於該任務,正如您所發現的那樣,其次您保留構建隊列。

理想情況下,您應該只在生成服務器上運行單元測試並延遲集成測試。我將使用發佈管理工具在構建之後自動部署我的應用程序,然後運行集成測試。我使用Visual Studio的發佈管理(適用於2012),但章魚部署也是一個很好的解決方案。

http://nakedalm.com/create-release-management-pipeline-professional-developers/

+0

在發佈管理我可以管理,因爲它們都內置部署組件?或者,我是否必須在開始發佈前等待他們全部構建? –

相關問題