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

时间:2017-03-01 20:04:00

标签: 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
  • 创建了一个Team City项目
  • 然后,对于每个项目,我创建了一个构建定义,其中包含两个步骤还原和构建
  • 恢复和构建步骤指定指定项目的project.json文件(例如,在项目B中,它将是" src \ B \ project.json"
  • 我为Project D添加了额外的步骤,因为它必须发布到IIS才会发布。

快照依赖关系

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

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

  • B对该依赖项上的A和完成构建触发器具有快照依赖性
  • C对该依赖项上的B和完成构建触发器具有快照依赖性
  • D的快照取决于C和A以及这些依赖项上的Finished Buid触发器

如果我在A上触发构建,则触发另一个构建链的构建链(即A-> B - > C - > D)。

然后,如果我触发C,它只触发D。

但是如果我从B,或C开始而没有先完成A的触发,则B的构建失败,因为它需要项目A Output First。

问题:

  1. 对于构建配置步骤,我是否以正确的方式进行,考虑到我还有其他项目(F,G,H)也引用了A和B.
  2. 如果需要开始构建项目B,如何将其配置为首先构建项目A(如果之前没有构建项目)。

1 个答案:

答案 0 :(得分:1)

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

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

关于触发器:

  • 在这种情况下,不建议使用完成触发器。引起 整个构建链,然后我们应该运行构建D,以便它将 将整个链添加到队列中。
  • 要在VCS根目录中自动触发构建链, 使用选项在D构建配置中仅配置一个VCS触发器 “触发快照依赖项的更改”。

在这种情况下,如果任何构建(A,B,C或D)中存在VCS更改,则将触发整个构建链。