2020-04-04 16:19:01 +00:00
|
|
|
|
# api
|
|
|
|
|
|
|
|
|
|
Пакет api реализует протокол, по которому общаются компоненты системы.
|
|
|
|
|
|
|
|
|
|
Этот пакет не занимается передачей файлов и артефактов, соответствующие функции находятся в
|
|
|
|
|
пакетах `filecache` и `artifact`.
|
|
|
|
|
|
|
|
|
|
## Worker <-> Coordinator
|
|
|
|
|
|
2020-04-05 15:19:59 +00:00
|
|
|
|
- Worker и Coordinator общаются через один запрос `POST /heartbeat`.
|
2020-04-04 16:19:01 +00:00
|
|
|
|
- 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`. Запишите в лог события
|
|
|
|
|
получения/отправки запроса и все ошибки. Это поможет вам отлаживать интеграционные тесты
|
|
|
|
|
в следующей части задания.
|