为什么buildbot在应该失败的时候没有失败?

2 投票
2 回答
527 浏览
提问于 2025-04-17 07:44

我正在尝试修复一个非常复杂的构建机器人基础构建系统,这个系统有个让人烦恼的习惯,就是在显示绿色条的时候,里面却有“失败(1)”的提示。

问题是我们使用ShellCommand这个构建步骤运行几个命令,当这些命令返回非零值时,并不会导致整个构建失败。

我们还有一些步骤在详细页面上显示为红色,但整个构建依然显示为绿色。

据我所知,在我的master.cfg文件中,步骤本身并没有设置'flunkOnFailure',而默认值是true。(虽然我找到的手册页面对此并不是很清楚)

我需要做些什么(或者撤销什么),才能确保当ShellCommand失败时,整个构建也会失败呢?

这个系统是在100%的Linux环境下运行的。

非常感谢。

2 个回答

2

BuildStep中,flunkOnFailure的默认值是False。一些子类会覆盖这个默认值,特别是ShellCommand。我猜那些显示为红色的步骤,虽然最终构建结果是绿色的,可能是因为它们没有设置flunkOnFailure

另一方面,也有可能是haltOnFailure没有被设置,这样其他步骤就会继续运行并成功,但整体构建结果还是失败。即使某些步骤成功,它们的显示仍然是绿色的,即使它们是在一个失败的步骤之后。特别是,瀑布页面的主体并没有明确指示某个构建是成功还是失败(虽然顶部的框框显示的是最近一次构建的结果)。无论是网格视图还是最近构建页面,都会清楚地显示构建的结果。

5

当你往工厂里添加一个步骤(比如 f.addStep(your_step))时,应该设置 haltOnFailure = True,这样如果某个步骤出错了,整个构建过程就会失败。

撰写回答