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

Continuous Integration: Build Pipeline for dependencies .NET

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

假设我有以下项目:

A -> B -> C ->D

A->D

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

配置

项目D是最后要发布的web应用(同时需要C和A)

快照依赖项

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

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

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

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

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

问题:

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

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

如果构建 B 被触发,那么所有构建链(A 和 B)都应该。可以有一个选项 "Do not run new build if there is a suitable one" 启用。 在这种情况下,构建 B 将重用合适的构建 A(如果存在)。

关于触发器:

  • 不建议在这种情况下使用完成触发器。触发 整个构建链,那么我们应该 运行 构建 D,这样它就会 将整个链添加到队列中。
  • 要在 VCS 根更改时自动触发构建链, 使用选项在 D 构建配置中仅配置一个 VCS 触发器 "Trigger on changes in snapshot dependencies".

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