2008-10-10 118 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

相关问题