首页 文章

什么是正确的Travis API调用(或库方法),首先启动和观察构建,然后检索其状态和构建日志?

提问于
浏览
0

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

我从triggering a build with the API开始,它给了我一个 Request 和它的 request.id . 这非常有效 .

  • 然后我可以使用/repo/.../request/#id endpoint检索此 Request ,其中包含 Request.state 和嵌入的 Build 及其 Build.id 以及 Build.state .

  • 然后我可以开始轮询/build/#id endpoint以每秒监视状态 .

  • 构建完成后,我可以使用 Build (_392999_请求时)从/job/#id/log下载日志并将其显示在我的应用程序中 .

这听起来效率很低 .

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

1 回答

  • 0

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

    • Travis CI API支持eager loading via ?include . 使用这个,我已经可以通过扩展的 Build 对象在 Request 响应中得到 Job.id?include=request.builds - 我不需要为 Job.idbuild endpoints 的另一个请求 . 但是,由于我需要轮询状态更改,这并没有多大帮助 .

    • 正如@MaëlPedretti在评论中所说,特拉维斯支持webhook notifications . submitted object包含一个 id ,它是 Build.id ,所以这可以取代我上面描述的轮询部分 . 由于我的应用程序不只是在一个可以配置为webhook url的服务器上运行,我需要一个有状态的服务器组件,我的应用程序可以轮询或收听 . 所以只是马交易:/

相关问题