我有一个Buildkite管道:sampleapp,我用它在我的应用程序上运行单元测试:
在Buildkite应用程序中,我设置了一个job - Unit Test,它通过一个脚本unittest.sh实际运行单元测试
如果我打开builds:https://www.buildkite.com/org/sample/builds/buildNumber并单击Unit Test Section,则可以在Buildkite UI中获得此脚本的输出(以日志的形式)。输出采用脚本运行日志的形式,并在最后以以下格式指定单元运行的结果:
[16:17:02]: ▸ Test Succeeded
+--------------------+-----+
| Test Results |
+--------------------+-----+
| Number of tests | 773 |
| Number of failures | 0 |
+--------------------+-----+现在,我有了一个客户机,它通过端点https://api.buildkite.com/v2/org/sampleapp/pipelines/sample/builds调用JSON,它以BuildKite格式返回所有构建的列表。例如,对于每个构建,它都有大量数据(数据的子集是:
[
{
"id": "xyz",
"url": "xyz",
"number": 1,
"creator": {...},
"pipeline:" {...},
"jobs": [
{
"id": "abc",
"type": "script",
"name": "Unit Test",
"command": "sh .buildkite/unittest.sh",
"log_url": "https://api.buildkite.com/v2/org/sampleapp/pipelines/sample/builds/1/jobs/12oidna-3e1n-f3fsa2/log",
"raw_log_url": "https://api.buildkite.com/v2/org/sampleapp/pipelines/sample/builds/1/jobs/12oidna-3e1n-f3fsa2/log.txt",
"artifacts_url": "https://api.buildkite.com/v2/org/sampleapp/pipelines/sample/builds/1/jobs/12oidna-3e1n-f3fsa2/artifacts"
}
]
}
]但是,这个JSON响应没有关于unittest.sh脚本日志中报告的测试结果(即测试数量、通过的测试等)的信息。
在调用REST API时,客户端还需要以某种方式访问构建结果。
一种方法是客户端首先获取构建JSON响应,并从该响应中获取每个构建的响应,获取日志(在JSON响应的log_url部分中指定),然后解析它们(以某种方式?)提取单元测试通过/失败结果。
但是,这将需要很长时间,因为每个响应有30个构建,并且日志文件相当大,因此需要一些时间来下载和解析单个日志文件。
这里的另一个挑战是处理这样的场景:单元测试运行本身有一些问题,文件末尾没有报告测试结果编号,但报告了一些错误。
我想知道是否有更好的方法来做这件事?也许是通过使用web-hooks来解析Buildkite本身上的数据,然后以某种方式将其发送到客户端上的接收端点。
但是,我不知道从哪里开始,以及如何开始..有没有人可以帮我做这件事,或者至少给我指个正确的方向?
发布于 2020-08-25 18:45:50
您可以通过REST API访问任何作业的日志输出:
https://buildkite.com/docs/apis/rest-api/jobs#get-a-jobs-log-output
大多数测试跑步者还可以将结果输出为json或xml文件。如果您可以找到这样的选项,那么您可以将测试结果更丰富地存储为工件:
https://buildkite.com/docs/pipelines/artifacts
您甚至可以使用此文件将测试结果摘要作为注释上传:
https://stackoverflow.com/questions/54568134
复制相似问题