如何使用TFS实现构建管道

时间:2009-07-21 15:56:24

标签: tfs continuous-integration

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

我们已经让TFS在每次提交后构建我们的项目。但构建时间太长,所以我们希望将构建分为两个阶段。持续整合文献提出了这种技术。

所以我正在寻找的是要做的事情。

  • 开发人员检查他的源代码。
  • TFS自动触发构建以编译代码并运行一些基本测试(我们已经有了)。开发人员得到快速的反馈,他的更改没有打破明显的东西。
  • 接下来,如果构建成功,则会触发新的TFS任务/构建,这将获取前一阶段的工件并运行一些更耗时的测试。

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

目前我们正在使用MSBuild中的<AfterEndToEndIteration>目标和<Exec> 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>

答案 2 :(得分:0)

您可以让您的中间人或次要构建签到生成的程序集到源代码控制中。这样你就可以让另一个构建使用已编译的DLL来打包和构建系统的第二部分。

你可以让“更大”的组装构建听取来自库构建的签到并组装依赖于那个构建的构建。

当然你要办理登机手续的二进制代码,但除非你做了一些奇怪的事情,否则你应该有足够的硬盘空间。