我们设置了 TeamCity 的“失败条件”,如果代码覆盖率指标不好,则构建失败。确切的条件是,如果代码覆盖率指标下降了几个百分点,则构建失败。
有时我们会构建一个第一次构建的分支。这些基本上是发布分支。我们只构建一次。
问题是 TeamCity 在构建新分支时失败。它说,代码覆盖率很差。
在日志中,我看到 TeamCity 找不到我的分支以前的版本。事实上,它需要一些以前的构建来比较代码覆盖率,但无法找到它,因为分支是新的。因此它使用一些“锚定”分支进行比较。
“Anchor”分支是一些旧的过时分支,具有更大的代码覆盖率。因此,对条件的评价是正确的。
问题是,如果我正在构建某个分支的第一个版本,我期望出现以下行为之一:
禁用需要先前构建但缺失的代码覆盖率指标
使用一些有意义的“ anchor ”构建进行比较,而不是一些我不清楚的方式选择的过时构建。
如何修复它?
最佳答案
TeamCity 论坛上的人们帮助我找到了答案。
事实证明,TeamCity 正在尝试查找我们想要构建的分支的一些先前版本,以将指标与当前版本进行比较。如果找不到以前的构建,它将从默认分支中获取一些构建。。在我们的例子中,它是另一个版本的某个分支,我们很惊讶地看到指标的比较。
新分支的解决方案是要么将默认分支设为一些指标为零的测试分支,以便新构建始终具有更好的指标,要么在每次构建新分支时关闭指标。
关于TeamCity 故障情况将分支构建与某些过时的分支进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35769100/