首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过Buildkite REST API获取Buildkite作业的输出

如何通过Buildkite REST API获取Buildkite作业的输出
EN

Stack Overflow用户
提问于 2019-02-07 15:17:52
回答 1查看 291关注 0票数 1

我有一个Buildkite管道:sampleapp,我用它在我的应用程序上运行单元测试:

在Buildkite应用程序中,我设置了一个job - Unit Test,它通过一个脚本unittest.sh实际运行单元测试

如果我打开builds:https://www.buildkite.com/org/sample/builds/buildNumber并单击Unit Test Section,则可以在Buildkite UI中获得此脚本的输出(以日志的形式)。输出采用脚本运行日志的形式,并在最后以以下格式指定单元运行的结果:

代码语言:javascript
复制
[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格式返回所有构建的列表。例如,对于每个构建,它都有大量数据(数据的子集是:

代码语言:javascript
复制
[
  {
    "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本身上的数据,然后以某种方式将其发送到客户端上的接收端点。

但是,我不知道从哪里开始,以及如何开始..有没有人可以帮我做这件事,或者至少给我指个正确的方向?

EN

回答 1

Stack Overflow用户

发布于 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://buildkite.com/docs/agent/v3/cli-annotate

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54568134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档