x/build/cmd/golangbuild: 从较低级别的步骤向上传播“基础设施故障”状态

iezvtpos  于 4个月前  发布在  Go
关注(0)|答案(2)|浏览(48)

https://ci.chromium.org/b/8756827332643819201 是一个由于基础设施问题(内部错误,而非正在测试的代码中的有效发现)而失败的构建示例。
它在“1.获取模块”的内部步骤中正确地将失败报告为“infra”(以紫色显示,而不是红色),但该 infra 状态并未传播到父步骤“3.运行测试”和顶层构建状态。
尽管内部错误很少见,我们努力将其发生频率降至最低,但每当发生时向上传播状态仍然是一个改进,这样就可以清楚地看到构建是由于内部错误而失败的,而无需查看其各个步骤。这就是该问题的跟踪问题。

zxlwwiss

zxlwwiss1#

我目前看了一下,将我看到的内容发布出来。
endInfraStep 当前的逻辑是在调用 step.End 时,将 bbpb.Status_INFRA_FAILURE 注解添加到错误上,但它并没有修改 *errp 本身,这是 fetchRepo 向其调用者传递的。也许如果它这样做,这就足以解决这个问题了。
或者也许还有更多要做的,或者采用不同的方法会更好。阅读 go.chromium.org/luci/luciexe/build 文档是值得的,看看这种情况是否在那里有覆盖。

jk9hmnmh

jk9hmnmh2#

请注意,这可能有助于避免一些构建者因“连续20次完成失败任务”等原因而被隔离。虽然我不确定确切的标准是什么,但如此多的连续基础设施故障也可能产生相同的效果。

相关问题