shri-infrastructure-hw

Домашняя работа по инфраструктуре.


Сервер

Из конфига читает порт, на котором он должен слушать запросы, и параметры для похода в API: base url, токен.

Ходит за заданиями на сборку в базу (API) и передает задание на сборку одному из агентов. Потом принимает результаты сборки и записывает их в БД (API).

Конфиг

Перейти в папку server, установить зависимости:

cd server && npm ci

Настроить файл конфига server-conf.json.

{
    "port": "5050",
    "apiBaseUrl": "https://shri.yandex/hw/api",
    "apiToken": "Bearer your_api_token_here",
    "githubToken": "your_github_token_here"
}
  • port (env PORT) - порт, на котором будет запущен сервер.
  • apiBaseUrl (env API_BASE_URL) - адрес сервера API.
  • apiToken (env API_TOKEN) - токен для авторизации в API.
  • githubToken (env GITHUB_TOKEN) - токен для использования github API.

Переменные окружения имеют больший приоритет в сравнении с базовым конфигом. Их можно задать в файле .env.

Запуск

npm start

Агент

Из конфига читает порт, на котором нужно слушать запросы и хост/порт, на которых работает сервер.

При запуске регистрируется в сервере, принимает задания на сборку, отсылает результаты на сервер.

Конфиг

Перейти в папку agent, установить зависимости:

cd agent && npm ci

Настроить файл конфига agent-conf.json.

{
    "port": 5051,
    "serverHost": "host.docker.internal",
    "serverPort": 5050
}
  • port (env PORT) - порт, на котором будет запущен агент.
  • serverHost (env SERVER_HOST) - хост build-сервера.
  • serverPort (env SERVER_PORT) - порт build-сервера.

Переменные окружения имеют больший приоритет в сравнении с базовым конфигом.

Запуск

  • Запуск без docker:
npm start
  • Запуск в изолированном docker-контейнере:

    • Сборка образа:
    npm run build-docker-image
    • Запуск контейнера в интерактивном режиме:
    npm run docker

У команды запуска контейнера есть отдельный CLI:

./scripts/docker.sh

Параметры командной строки:

  • [без параметров] - данные берутся из базового конфига.
  • -i, --interactive - интерактивный режим, остальные параметры игнорируются.
  • -p, --port - задаёт порт.
  • --server-host - задаёт хост build-сервера.
  • --server-port - задаёт хост build-сервера.

Пример:

./scripts/docker.sh -p 5051 --server-host host.docker.internal --server-port 5050