【发布时间】:2014-08-20 07:27:35
【问题描述】:
我们有一种情况,我们有很多构建同时运行,但是我们需要序列化输入的结果。在构建的各个检查点,我们基本上说“如果有东西进入主分支,失败了”......我们真正想要做的是说“如果有东西进入主分支,回到第一步”。
teamcity 有没有办法进入不同的构建步骤?
即在构建中创建一个循环? (没有将整个构建放在一个步骤中)
【问题讨论】:
标签: build continuous-integration teamcity
我们有一种情况,我们有很多构建同时运行,但是我们需要序列化输入的结果。在构建的各个检查点,我们基本上说“如果有东西进入主分支,失败了”......我们真正想要做的是说“如果有东西进入主分支,回到第一步”。
teamcity 有没有办法进入不同的构建步骤?
即在构建中创建一个循环? (没有将整个构建放在一个步骤中)
【问题讨论】:
标签: build continuous-integration teamcity
他们让你指定项目应该运行的顺序,这样如果你有项目A、B和C,B的触发器就是A的成功完成,C的触发器就是B的成功完成。
A => B => C
他们还让你分叉,这样 A 的成功可以触发 B 和 C,当 B 和 C 都完成时 D 去:
B
A => => D
C
【讨论】:
如果您想在 A=>B => A 机制中执行此操作,您可以尝试在构建链中执行此操作。
A 是您的第一个版本。 B 是您的测试版本。 C 是你的依赖版本。
B依赖于A,C依赖于B
您需要创建一个构建 B 来轮询 repo 并检查构建 A 启动后是否有任何更改。如果有任何更改失败,则不会触发构建 C 并且构建链失败。但是由于新的更改,会触发构建 A 并创建一个完整的新构建链。
您还可以更改 vcs 轮询以设置静默期。例如,您可以将构建更改为在触发前等待 5 分钟,以检查是否有任何新更改。如果有新的更改,则重置静默期
更好的方法是轮询存储库的时间比构建所用的时间更长。例如,如果您的总构建时间为 10 分钟,则以 15 分钟的间隔轮询存储库。但是,这取决于您想要实现的目标,可能不适合您的目的
您还可以使用Teamcity Shared resources 确保在任何给定时间只有一个目标在运行
【讨论】: