Серверная часть CI Сервера предоставляет доступ к апи, связывающее фронтенд и бэкенд. Приложение написано на Node.js v16.3.0
.
У апи есть несколько ручек, работающие с json
,
при получении ответа с бэкенда, они возвращают статус запроса и обьект data
.
- npm ci
- npx tsc
- Выходная папка - dist/src
GET /api/settings
получение сохраненных настроек
POST /api/settings
cохранение настроек
Тело запроса:
- repoName: ссылка на репозиторий
- buildCommand: команда для билда
- mainBranch: главная ветка репозитория
- period: частота синхронизации (в минутах)
В момент сохранения настроек происходит клонирование репозитория с помощью дочернего процесса git. Клонируется только .git папка, хранится она в папке data/Repository
(Однако если отправлять этот запрос один за другим, когда первый репозиторий еще не загрузился, то возникают ошибки, не понимаю как это исправить. Я думаю необходимо что-то на подобии
switchMap
изRxJs
, но не знаю с чего начать реализацию этой идеи)
DELETE /api/settings
удаление настроек
Удаляется так же локальная копия репозитория с помощью утилит fs
GET /api/builds
получение списка всех сборок
GET /api/builds/:buildId
получение информации о конкретной сборке
GET /api/builds/:buildId/logs
получение логов билда (сплошной текст)
Тк. это дорогая операция для бэкенда, то запросы кэшируются, так же есть инвалидация кэша - спустя 32 часа кэш удаляется.
POST /api/builds/:commitHash
добавление сборки в очередь
Делается запрос по адресу бэкенда
/api/build/request
, все данные о коммите получаются с помощью дочерних процессов git