shad-go/distbuild/pkg/api
2020-04-04 19:21:47 +03:00
..
mock Finish distbuild/api 2020-04-04 19:21:47 +03:00
build.go Client protocol 2020-03-29 19:03:07 +03:00
build_client.go Finish distbuild/api 2020-04-04 19:21:47 +03:00
build_handler.go Finish distbuild/api 2020-04-04 19:21:47 +03:00
build_test.go Finish distbuild/api 2020-04-04 19:21:47 +03:00
heartbeat.go Finish distbuild/api 2020-04-04 19:21:47 +03:00
heartbeat_client.go Finish distbuild/api 2020-04-04 19:21:47 +03:00
heartbeat_handler.go Finish distbuild/api 2020-04-04 19:21:47 +03:00
heartbeat_test.go Finish distbuild/api 2020-04-04 19:21:47 +03:00
README.md Finish distbuild/api 2020-04-04 19:21:47 +03:00

api

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

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

Worker <-> Coordinator

  • Worker и Сoordinator общаются через один запрос 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. Запишите в лог события получения/отправки запроса и все ошибки. Это поможет вам отлаживать интеграционные тесты в следующей части задания.