Каковы правильные вызовы Travis API (или методы библиотеки), чтобы сначала запустить и просмотреть сборку, а затем получить ее статус и журнал сборки?

В одном из моих приложений я хочу запустить сборку 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 и отобразить его в моем приложении.

Все это звучит довольно неэффективно.

Есть ли лучший способ добиться этого?
Есть ли "более быстрый способ" (= меньше запросов) от создания request в log?
Можно ли как-то избежать ручного опроса?

1 ответ

Я буду использовать этот ответ для документирования своих собственных исследований, которые могут помочь решить эту проблему:

  1. Travis CI API поддерживает загрузку через?include, Используя это, я уже могу получить Job.id в Request ответ через расширенный Build объекты: ?include=request.builds - Мне не нужно делать еще один запрос build конечная точка для Job.id, Но так как мне нужно опросить изменения статуса, это не очень помогает.

  2. Как предложил @Maël Pedretti в комментариях, Travis поддерживает уведомления о веб-крюках. Представленный объект содержит id какой Build.id, так что это может заменить часть опроса, которую я описал выше. Поскольку мое приложение работает не только на одном сервере, который можно настроить как URL-адрес webhook, мне нужен серверный компонент с состоянием, который мое приложение могло бы опрашивать или прослушивать. Так что просто торговля лошадьми: /

Другие вопросы по тегам