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
(envPORT
) - порт, на котором будет запущен сервер.apiBaseUrl
(envAPI_BASE_URL
) - адрес сервера API.apiToken
(envAPI_TOKEN
) - токен для авторизации в API.githubToken
(envGITHUB_TOKEN
) - токен для использования github API.
Переменные окружения имеют больший приоритет в сравнении с базовым конфигом. Их можно задать в файле .env
.
Запуск
npm start
Агент
Из конфига читает порт, на котором нужно слушать запросы и хост/порт, на которых работает сервер.
При запуске регистрируется в сервере, принимает задания на сборку, отсылает результаты на сервер.
Конфиг
Перейти в папку agent
, установить зависимости:
cd agent && npm ci
Настроить файл конфига agent-conf.json
.
{
"port": 5051,
"serverHost": "host.docker.internal",
"serverPort": 5050
}
port
(envPORT
) - порт, на котором будет запущен агент.serverHost
(envSERVER_HOST
) - хост build-сервера.serverPort
(envSERVER_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