shad-go/distbuild/pkg/api/README.md
Fedor Korotkiy e7eb367383 Fix typos
2020-04-05 18:19:59 +03:00

1.9 KiB

api

Пакет api реализует протокол, по которому общаются компоненты системы.

Этот пакет не занимается передачей файлов и артефактов, соответствующие функции находятся в пакетах filecache и artifact.

Worker <-> Coordinator

  • Worker и Coordinator общаются через один запрос POST /heartbeat.
  • Worker посылает HeartbeatRequest и получает в ответ HeartbeatResponse.
  • Запрос и ответ передаются в формате json.
  • Ошибка обработки heartbeat передаётся как текстовая строка.

Client <-> Coordinator

Client и Coordinator общаются через два вызова.

  • POST /build - стартует новый билд.

    • Client посылает в Body запроса json c описанием сборки.
    • Coordinator стримит в body ответа json сообщения описывающие прогресс сборки.
    • Первым сообщением в ответе Coordinator присылает buildID.
    • Тут можно было бы использовать websocket, но нас устраивает более простое решение.
  • POST /signal?build_id=12345 - посылает сигнал бегущему билду.

    • Запрос и ответ передаются в формате json.

Замечания

  • Конструкторы клиентов и хендлеров принимают первым параметром *zap.Logger. Запишите в лог события получения/отправки запроса и все ошибки. Это поможет вам отлаживать интеграционные тесты в следующей части задания.