【发布时间】:2020-06-05 21:58:42
【问题描述】:
假设我的 TeamCity 构建链中有两个构建,都使用相同的 VCS 根。 2nd 构建在 1st 完成后开始(2nd 对 1st 有快照依赖)。
1st 构建使用VSC labeling 构建功能,并在构建完成后将新标签添加到 Git 存储库。
我遇到的问题是 2nd 构建没有得到这个新标签。例如,如果我在 2nd 构建的第一步中运行git describe,它将返回“上一个”标签值。我相信,这种“滞后”的原因是根据 TeamCity 文档:
[标签]过程在构建完成后在后台进行
因此,当 2nd 构建执行 VCS 检出时,Git 存储库还没有新标签(因为它正在后台应用,显然是在 2nd 构建开始),因此对于 2nd 构建,“上一个”标签实际上是可用的最新标签。
有没有办法只在 VCS 标记完成后运行 2nd 构建?
我可以考虑添加一个带有一些超时的虚拟步骤,以确保标记过程有足够的时间完成,然后才运行 2nd 构建,但这看起来像一个丑陋的拐杖。
【问题讨论】:
-
您对这个 repo 的投票时间是怎样的?您可以在管理 > 诊断 > VCS 状态中查看
-
2nd 构建在 1st 成功构建时触发(快照依赖强制修订同步),因此轮询不会在这种情况下无关紧要。
-
这可能无关紧要,但它可以说明为什么标记时间过长。
-
不太可能很长,但是自从 2nd 构建和 VCS 标签同时开始(或者可能构建比 VCS 标签更早 ),那么无论如何都为时已晚。