什么是正确的 Travis API 调用(或库方法)来首先启动和观察构建,然后检索其状态和构建日志?
What are the correct Travis API calls (or library methods) to first start and watch a build and later retrieve its status and build log?
在我的一个应用程序中,我想触发 Travis CI 构建,"watch" 按计划构建,运行 并完成,然后检索最终构建状态以及将其输出到我的应用程序中的构建日志。
我从 triggering a build with the API 开始,它给了我 Request
及其 request.id
。这非常有效。
- 然后我可以使用
/repo/.../request/#id
endpoint.
- 然后我可以开始轮询
/build/#id
endpoint 以每秒监视状态。
- 构建完成后,我可以使用
Build
的一部分 Job
(当 /build/#id
请求时)从 [=29 下载日志=] 并将其显示在我的应用程序中。
这听起来效率很低。
有没有更好的方法来实现这个?
从创建 request
到 log
是否存在 "quicker way"(= 更少的请求)?
我能以某种方式避免手动轮询吗?
我将使用这个答案来记录我自己的研究,这可能有助于解决这个问题:
Travis CI API 支持 eager loading via ?include
。使用这个,我已经可以通过扩展 Build
对象在 Request
响应中获得 Job.id
:?include=request.builds
- 我不必再向 [=15 发出请求=] Job.id
的端点。但是因为我需要轮询状态更改,所以这并没有多大帮助。
正如@Maël Pedretti 在评论中建议的那样,Travis 支持 webhook notifications. The submitted object 包含一个 id
,即 Build.id
,因此这可以替换轮询部分 I如上所述。由于我的应用程序不只是 运行 在一台服务器上可以配置为 webhook url,所以我需要一个有状态的服务器组件,我的应用程序可以轮询或收听。所以只是马交易:/
在我的一个应用程序中,我想触发 Travis CI 构建,"watch" 按计划构建,运行 并完成,然后检索最终构建状态以及将其输出到我的应用程序中的构建日志。
我从 triggering a build with the API 开始,它给了我 Request
及其 request.id
。这非常有效。
- 然后我可以使用
/repo/.../request/#id
endpoint. - 然后我可以开始轮询
/build/#id
endpoint 以每秒监视状态。 - 构建完成后,我可以使用
Build
的一部分Job
(当/build/#id
请求时)从 [=29 下载日志=] 并将其显示在我的应用程序中。
这听起来效率很低。
有没有更好的方法来实现这个?
从创建 request
到 log
是否存在 "quicker way"(= 更少的请求)?
我能以某种方式避免手动轮询吗?
我将使用这个答案来记录我自己的研究,这可能有助于解决这个问题:
Travis CI API 支持 eager loading via
?include
。使用这个,我已经可以通过扩展Build
对象在Request
响应中获得Job.id
:?include=request.builds
- 我不必再向 [=15 发出请求=]Job.id
的端点。但是因为我需要轮询状态更改,所以这并没有多大帮助。正如@Maël Pedretti 在评论中建议的那样,Travis 支持 webhook notifications. The submitted object 包含一个
id
,即Build.id
,因此这可以替换轮询部分 I如上所述。由于我的应用程序不只是 运行 在一台服务器上可以配置为 webhook url,所以我需要一个有状态的服务器组件,我的应用程序可以轮询或收听。所以只是马交易:/