通过 api 了解哪个构建步骤失败

Know which build step is failed through api

我正试图通过 API 找出构建的详细信息。我在下面使用来获得具体结果。 http://localhost:8080/job/test/lastBuild/api/json?pretty=true

现在,当构建失败时,我只是获取构建状态。我想确定是哪个构建步骤导致了问题。请告诉我如何才能通过 api

这是一个有趣的问题。

我以前从未发现过这样的东西,因为 Jenkins 只是按照你说的告诉你好坏。

一种可能的解决方案是使用 Jenkins BFA 插件。

https://wiki.jenkins-ci.org/display/JENKINS/Build+Failure+Analyzer

此插件可以帮助您根据您在配置中描述的错误模式自动检测错误。

然后您可以从 jenkins json 文件中收集详细的错误信息。

Br,

蒂姆

我一直在做一些工作,从我们的 Jenkins 实例中抓取失败的构建,然后尝试匹配失败,包括由构建失败分析器分类的失败,我可以告诉你这有点令人沮丧。

我们有三种类型的构建(FreeStyle、Matrix 和 Workflow),它们中的每一种都有不同的报告。 Tim 关于在 API 上使用 depth=3 的评论回合有效,但我一直在使用更具体的:

https://HOST_NAME/job/PROJECT_NAME/api/json?pretty=true&tree=allBuilds[number,timestamp,url,duration,result,runs[url,number],actions[foundFailureCauses[*]]]

tree 部分可以更好地确保您获得所有想要的部分(有时 depth 不会得到它所做的事情),以及排除您不需要的部分。这适用于 FreeStyle 构建和以单个节点终止的工作流构建。

对于 Matrix 构建,您必须遵循 runs 中提供的 link,但您必须咀嚼它给您的 URL(它将构建编号放在错误的地方)。然后你在 linked 构建上调用相同的 API 来删除那个。

据我所知,对于工作流构建,有烦人的消息、好消息、坏消息,甚至更糟的消息。烦人的部分是你必须看到这是一个工作流构建(看看你在没有要求的情况下得到的 _class 属性),然后看看构建 url,但将 wfapi 替换为 api/json(并忘记其余参数)。然后,您可以按照从中返回的 json link 来定位故障。好消息是,这让您更好地 link 失败,包括可理解的消息(有时)。

坏消息是我不确定 Build Failure Analyzer 是否为这些正常工作,或者不知道如何在正确的构建步骤上标记它。

更糟糕的消息是,对于我服务器上的许多构建,此 API 似乎根本不起作用。这是即使我可以通过 BlueOcean UI 看到类似的信息。我现在正在调查 运行。

抱歉,这不是一个简单的答案,但据我目前所知,这就是事情的状态。