如何仅在需要时触发昂贵的构建步骤?
How to trigger expensive build steps only when required?
我有一个具有以下构建配置的 TeamCity 项目:
- 收集依赖项(昂贵)
- 建造
- 测试
- 部署
说我知道我是否需要通过更改某些文件来做到这一点 deps.txt
。
这是我想要做的:
- 我想在版本控制中的所有更改上触发构建。
- 如果
deps.txt
已更改,我想 运行 构建 1、2、3、4。
- 如果
deps.txt
没有改变,我想 运行 构建 2 然后 3 然后 4。
我试过像这样在构建配置上放置触发器:
- VCS 在没有签到时触发,除非
+:deps.txt
- VCS tigger 所有签到,除非
-:deps.txt
- 快照依赖于 2,当 2 完成构建时触发
- 快照依赖于 3,当 3 完成构建时触发
但是如果提交包含更改 deps.txt 和 其他文件,则配置 1 和 2 同时触发,这意味着配置 2 将失败。
是否有在 TeamCity 中执行此操作的简单方法?
您可以将 1 合并为 2,然后对于收集依赖项的构建步骤 1,编写一个使用 teamcity.build.changedFiles.file
属性(参见 TeamCity docs)的自定义脚本来检查 deps.txt 是否真的改变了,然后是否收集依赖关系。 2 中的其余构建步骤将照常进行。
我想建议一个不同的方法:
一个。创建重复的构建配置
b。从上次构建触发整个构建链。
第一个构建配置链:
收集依赖项:无触发器
构建:快照和工件依赖于同一构建链上的 1,无触发器
测试:快照和工件依赖于同一构建链上的 2,无触发器
部署:snapshot和artifact依赖同链3,VCS触发+:deps.txt
构建配置的第二个链:
构建:上次成功构建时对 1 的快照和工件依赖性,无触发器
测试:snapshot和artifact依赖同链5,无trigger
部署:snapshot和artifact依赖于同一条链上的6,VCS触发任何变化-:deps.txt
为了减少重复,您可以使用 2 和 5、3 和 6、4 和 7 的模板。
我有一个具有以下构建配置的 TeamCity 项目:
- 收集依赖项(昂贵)
- 建造
- 测试
- 部署
说我知道我是否需要通过更改某些文件来做到这一点 deps.txt
。
这是我想要做的:
- 我想在版本控制中的所有更改上触发构建。
- 如果
deps.txt
已更改,我想 运行 构建 1、2、3、4。 - 如果
deps.txt
没有改变,我想 运行 构建 2 然后 3 然后 4。
我试过像这样在构建配置上放置触发器:
- VCS 在没有签到时触发,除非
+:deps.txt
- VCS tigger 所有签到,除非
-:deps.txt
- 快照依赖于 2,当 2 完成构建时触发
- 快照依赖于 3,当 3 完成构建时触发
但是如果提交包含更改 deps.txt 和 其他文件,则配置 1 和 2 同时触发,这意味着配置 2 将失败。
是否有在 TeamCity 中执行此操作的简单方法?
您可以将 1 合并为 2,然后对于收集依赖项的构建步骤 1,编写一个使用 teamcity.build.changedFiles.file
属性(参见 TeamCity docs)的自定义脚本来检查 deps.txt 是否真的改变了,然后是否收集依赖关系。 2 中的其余构建步骤将照常进行。
我想建议一个不同的方法:
一个。创建重复的构建配置
b。从上次构建触发整个构建链。
第一个构建配置链:
收集依赖项:无触发器
构建:快照和工件依赖于同一构建链上的 1,无触发器
测试:快照和工件依赖于同一构建链上的 2,无触发器
部署:snapshot和artifact依赖同链3,VCS触发+:deps.txt
构建配置的第二个链:
构建:上次成功构建时对 1 的快照和工件依赖性,无触发器
测试:snapshot和artifact依赖同链5,无trigger
部署:snapshot和artifact依赖于同一条链上的6,VCS触发任何变化-:deps.txt
为了减少重复,您可以使用 2 和 5、3 和 6、4 和 7 的模板。