如何仅在需要时触发昂贵的构建步骤?

How to trigger expensive build steps only when required?

我有一个具有以下构建配置的 TeamCity 项目:

  1. 收集依赖项(昂贵)
  2. 建造
  3. 测试
  4. 部署

说我知道我是否需要通过更改某些文件来做到这一点 deps.txt

这是我想要做的:

我试过像这样在构建配置上放置触发器:

  1. VCS 在没有签到时触发,除非 +:deps.txt
  2. VCS tigger 所有签到,除非 -:deps.txt
  3. 快照依赖于 2,当 2 完成构建时触发
  4. 快照依赖于 3,当 3 完成构建时触发

但是如果提交包含更改 deps.txt 其他文件,则配置 1 和 2 同时触发,这意味着配置 2 将失败。

是否有在 TeamCity 中执行此操作的简单方法?

您可以将 1 合并为 2,然后对于收集依赖项的构建步骤 1,编写一个使用 teamcity.build.changedFiles.file 属性(参见 TeamCity docs)的自定义脚本来检查 deps.txt 是否真的改变了,然后是否收集依赖关系。 2 中的其余构建步骤将照常进行。

我想建议一个不同的方法:

一个。创建重复的构建配置

b。从上次构建触发整个构建链。

第一个构建配置链:

  1. 收集依赖项:无触发器

  2. 构建:快照和工件依赖于同一构建链上的 1,无触发器

  3. 测试:快照和工件依赖于同一构建链上的 2,无触发器

  4. 部署:snapshot和artifact依赖同链3,VCS触发+:deps.txt

构建配置的第二个链:

  1. 构建:上次成功构建时对 1 的快照和工件依赖性,无触发器

  2. 测试:snapshot和artifact依赖同链5,无trigger

  3. 部署:snapshot和artifact依赖于同一条链上的6,VCS触发任何变化-:deps.txt

为了减少重复,您可以使用 2 和 5、3 和 6、4 和 7 的模板。