2008-10-10 117 views
5

您將如何手動觸發團隊構建中的其他團隊構建?例如,當我們在CC.Net時,如果某些構建成功,其他構建將觸發。第二個版本可以是使用此組件的項目,也可以是針對同一個組件的額外的,長期運行的測試庫。手動觸發TFS團隊構建

回答

4

你可以做到這一點的一種方法是你可以將一個AfterEndToEndIteration目標添加到你的TFSBuild.proj文件中,該文件將運行TfsBuild.exe命令行來啓動其他的構建。我想這樣的事情(雖然我沒有測試過)

<Target Name="AfterEndToEndIteration"> 

    <GetBuildProperties TeamFoundationServerUrl="$(TeamFoundationServerUrl)" 
         BuildUri="$(BuildUri)" 
         Condition=" '$(IsDesktopBuild)' != 'true' "> 
     <Output TaskParameter="Status" PropertyName="Status" /> 
    </GetBuildProperties> 

    <Exec Condition=" '$(Status)'=='Succeeded' " 
      Command="TfsBuild.exe start /server:$(TeamFoundationServerUrl) /buildDefinition:&quot;Your Build Definition To Run&quot;" /> 

    </Target> 
3

我已經做了馬丁在多個場合提出同樣的事情(他的博客是超越樂於助人,BTW)。但是,我最終需要觸發像這樣的級聯構建(基於其他複雜的規則),因此我創建了一個自定義任務來完成它。保持你的構建腳本不錯,精益,並給你更多的靈活性和封裝的可能性。

public override bool Execute() 
    {  
     IBuildDefinition[] buildDefinitions = BuildServer.QueryBuildDefinitions(ProjectName); 

     foreach (IBuildDefinition build in buildDefinitions) 
     { 
      if(build.Enabled) //I did a bunch of custom rules here 
      { 
       Log.LogMessage(String.Concat("Queuing build: ", build.Name)); 
       BuildServer.QueueBuild(build); 
      } 
     } 

     return true; 
    } 

有亞倫哈爾貝格的博客更多的好東西太多:

http://blogs.msdn.com/aaronhallberg/archive/2007/04/24/team-build-object-model-queueing-a-build.aspx

相關問題