Msbuild 持续集成:为依赖项.NET构建管道

Msbuild 持续集成:为依赖项.NET构建管道,msbuild,teamcity,.net-core,asp.net-core-1.0,Msbuild,Teamcity,.net Core,Asp.net Core 1.0,我正在使用TeamCity v10自动构建.net核心解决方案: 假设我有以下项目: A->B->C->D A->D 箭头表示项目B引用了项目A,需要先恢复并构建该项目 配置 项目D是一个必须在最后发布的web应用程序(它还需要C和a) 为此,我为a、B、C、D中的每一个创建了一个团队城市项目 然后,我为每个项目创建了一个构建定义,它包括两个步骤:恢复和构建 还原和构建步骤指定指定项目的project.json文件(例如,在项目B中,它将是“src\B\project.json” 我为项目D添

我正在使用TeamCity v10自动构建.net核心解决方案:

假设我有以下项目:

A->B->C->D

A->D

箭头表示项目B引用了项目A,需要先恢复并构建该项目

配置

项目D是一个必须在最后发布的web应用程序(它还需要C和a)

  • 为此,我为a、B、C、D中的每一个创建了一个团队城市项目
  • 然后,我为每个项目创建了一个构建定义,它包括两个步骤:恢复和构建
  • 还原和构建步骤指定指定项目的project.json文件(例如,在项目B中,它将是“src\B\project.json”
  • 我为项目D添加了额外的步骤,这是发布,因为它必须发布到IIS
快照相关性

引用的任何构建项目都应触发依赖项目的构建,以确保更改不会导致其他项目中断

对于这种情况,我创建了以下快照依赖项:

  • B对A具有快照依赖项,并对该依赖项具有已完成的生成触发器
  • C对B具有快照依赖关系,并已完成对该依赖关系的生成触发器
  • D的快照依赖于C和A,并在这些依赖项上完成构建的触发器
如果我在a上触发一个构建,它将触发构建链上的另一个构建(即a->B->C->D)

那么,如果我触发C,它只触发D

但是,如果我从B或C开始,而没有先触发A,则B的构建会失败,因为它首先需要项目A输出

问题:

  • 对于构建配置步骤,考虑到我还有其他项目(F、G、H)也涉及到A和B,我是否以正确的方式进行了构建
  • 若需要开始构建项目B,若之前并没有构建项目A,那个么如何将其配置为首先构建项目A

  • 解决方案是配置从B到A、从C到B、从D到C的快照依赖关系。但是,从D到A的依赖关系过大,因为整个构建链运行在同一版本上

    如果触发了构建B,那么链中的所有构建(A和B)都应该启用。可以启用选项“如果有合适的构建,则不运行新构建”。 在这种情况下,构建B将重用合适的构建A(如果存在)

    关于触发因素:

    • 在这种情况下,不建议使用finish触发器。要触发 整个构建链,然后我们应该运行构建D,这样它将 将整个链添加到队列中
    • 要根据VCS根目录中的更改自动触发构建链, 使用选项在D构建配置中仅配置一个VCS触发器 “快照依赖项更改时触发”
    在这种情况下,如果任何构建(A、B、C或D)中存在VCS更改,则将触发整个构建链