0

在我的一个应用程序中,我想触发 Travis CI 构建,“观察”按计划、运行和完成的构建,然后检索最终构建状态和构建日志以将其输出到我的应用程序中。

我首先使用 API 触发构建,这给了我一个Request和它的request.id. 这完美地工作。

  • 然后我可以使用端点检索这个Request,其中包括Request.state和 一个嵌入Build的及其Build.id连同。Build.state/repo/.../request/#id
  • 然后我可以开始轮询/build/#id端点以每秒监视状态。
  • 构建完成后,我可以使用(当从 请求时)Job的一部分来下载日志并将其显示在我的应用程序中。Build/build/#id/job/#id/log

这一切听起来都很低效。

有没有更好的方法来实现这一目标?创建to
是否有“更快的方式”(=更少的请求)? 我可以以某种方式避免手动轮询吗?requestlog

4

1 回答 1

1

我将使用这个答案来记录我自己的研究,这可能有助于解决这个问题:

  1. Travis CI API 支持通过?include. 使用它,我已经可以通过扩展对象获得响应:Job.id-我不必对. 但由于我需要轮询状态变化,这并没有太大帮助。RequestBuild?include=request.buildsbuildJob.id

  2. 正如@Maël Pedretti 在评论中建议的那样,Travis 支持webhook 通知提交的对象包含一个idwhich 是Build.id,所以这可以代替我上面描述的轮询部分。由于我的应用程序不仅仅在一台可以配置为 webhook url 的服务器上运行,我需要一个有状态的服务器组件,我的应用程序可以轮询或收听。所以只是马交易:/

于 2018-12-09T18:11:24.453 回答