我对构建链中的构建计划有疑问,这真的让我很困扰。
我有一个简单的构建A -> B
链
- A 非常快(不到一分钟)——它基本上是从生产系统中检索数据库。在处理完成之前,无法判断生成的工件是否与先前的结果相同。目前构建预定的时间。
- B 非常慢(5-6 小时)——它将 A 的输出加上许多其他来源的输出组合成大量的工件。目前它对 A 有一个快照依赖,也对其他源有依赖。
除非需要,否则我想避免运行 B - 即如果 B 的任何输入已更改 - 但我该怎么做?
如果 A 检测到结果未更改,我可以失败/取消 A,但这将导致 B 出现“快照依赖失败”,因此如果 B 的任何其他其他输入源发生更改,它将不会重建结果...
有什么方法可以停止或中止 A 的构建,以免触发 B 的构建?
编辑:我(可能)有一个想法:我可以让 A 在 SCM 中检查生成的工件 - 如果它与以前的版本不同 - 并让它驱动 B 的触发器 - 它已经有许多其他来源单片机。它不会是同一个构建链的一部分——据我所知——但它是下一个最好的东西......