在我的一个应用程序中,我想触发Travis CI构建,按计划,运行和完成“监视”构建,然后检索最终构建状态和构建日志以将其输出到我的应用中。 / p>
我从triggering a build with the API开始,这给了我Request
及其request.id
。效果很好。
Request
,其中包括Request.state
和嵌入式Build
及其Build.id
和Build.state
3}}。/repo/.../request/#id
endpoint来每秒监视一次状态。Job
中的Build
(从/build/#id
请求时)从/build/#id
endpoint下载日志并显示在我的应用程序中。这听起来效率很低。
是否有更好的方法来实现这一目标?
从创建request
到log
是否有一种“快速方式”(=更少的请求)?
我可以避免手动轮询吗?
答案 0 :(得分:0)
我将使用此答案记录自己的研究,这可能有助于解决此问题:
Travis CI API支持eager loading via ?include
。使用此方法,我已经可以通过扩展的Job.id
对象在Request
响应中获得Build
:?include=request.builds
-我不必对{{1 build
的}}端点。但是,由于我需要查询状态更改,因此并没有太大帮助。
正如@MaëlPedretti在评论中建议的那样,Travis支持webhook notifications。 submitted object包含一个Job.id
id
,因此它可以代替我上面描述的轮询部分。由于我的应用程序不仅仅运行在一台可以配置为webhook url的服务器上,因此我需要一个有状态的服务器组件,我的应用程序可以轮询或监听该组件。因此,只做一匹马:/