2009-07-21 79 views
4

我尝试使用TFS实现构建管道。我如何使用TFS实现构建管道

我们已经有TFS在每次提交后构建项目。但是构建时间太长,所以我们想将构建分成两个阶段。持续集成文献表明了这种技术。

所以我在找什么是做以下事情。

  • 开发人员检查他的源代码。
  • TFS自动触发构建来编译代码并运行一些基本的测试(我们已经有了)。开发人员得到了快速的反馈,他的改变并没有让事情变得明显。
  • 接下来,如果构建成功,则会触发一个新的TFS任务/构建,该构建将采用上一阶段的构件并运行更耗时的测试。

关于如何实现这一点的任何想法?

回答

2

1)编写一个服务来监听BuildCompleted事件。 IIS webservice sample codeSelf-hosted WCF sample code。在您的事件处理程序中,可以使用call the TFS Build API来启动一个定义附加任务的单独构建类型,或者直接从此处直接执行自定义代码。

2)Register your service带有TFS,加入server side filter on successful builds

+0

我以某种方式跳跃有一个更简单的方法。我会看看我是否以这种方式工作。 – 2009-07-22 06:50:58

0

您可以让您的中介或次要构建将生成的程序集签入到源代码控制中。这样你可以让其他版本使用已编译的DLL来打包和构建系统的第二部分。

您可以让“更大”的装配构建听取来自库的检入,并根据该构建汇编构建。

当然,你需要登记二进制代码,但除非你做了一件奇怪的事情,否则你应该有足够的硬盘空间。

1

目前我们正在使用MSBuild中的<AfterEndToEndIteration>目标和TfsBuild.exe中的目标。

<Target Name="AfterEndToEndIteration"> 
    <PropertyGroup> 
    <TfsBuildExecutable>C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\TfsBuild.exe</TfsBuildExecutable> 
    <CommandToTriggerNextStage>&quot;$(TfsBuildExecutable)&quot; start /server:$(TeamFoundationServerUrl) /buildDefinition:&quot;Project\Next Stage&quot; /queue</CommandToTriggerNextStage> 
    </PropertyGroup> 

    <Exec Condition=" '$(Status)'!='Failed' " 
     Command="$(CommandToTriggerNextStage)" />  
</Target>