【问题标题】:How can I implement a build pipeline with TFS如何使用 TFS 实现构建管道
【发布时间】:2018-02-03 01:10:01
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: tfs continuous-integration


    【解决方案1】:

    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

    【讨论】:

    • 不知何故,我想到了一种更简单的方法。我会看看我是否能以这种方式工作。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      您可以让“更大”的组装版本监听来自库版本的签入,并组装依赖于那个的版本。

      当然你可以签入二进制代码,但除非你做一些奇怪的事情,否则你应该有足够的硬盘空间。

      【讨论】:

        猜你喜欢
        • 2012-05-26
        • 2011-06-20
        • 2021-02-20
        • 1970-01-01
        • 1970-01-01
        • 2020-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多