Skip to content

Super-Cereal/CiServer

Repository files navigation

CI Server

Серверная часть CI Сервера предоставляет доступ к апи, связывающее фронтенд и бэкенд. Приложение написано на Node.js v16.3.0.

У апи есть несколько ручек, работающие с json, при получении ответа с бэкенда, они возвращают статус запроса и обьект data.

TypeScript

  1. npm ci
  2. npx tsc
  3. Выходная папка - dist/src

Настройки репозитория

GET /api/settings получение сохраненных настроек

POST /api/settings cохранение настроек

Тело запроса:

  1. repoName: ссылка на репозиторий
  2. buildCommand: команда для билда
  3. mainBranch: главная ветка репозитория
  4. 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published