Образы и CI
Как собирается образ EVA, как запустить платформу локально для проверки и какие артефакты выпускает CI, включая сборки EVA Desktop.
Образ
Образ собирается из корня монорепозитория:
dockerfile
FROM node:22-alpine AS build
WORKDIR /app
RUN corepack enable && corepack prepare pnpm@11.21.0 --activate
COPY . .
RUN pnpm install --frozen-lockfile
RUN pnpm build
CMD ["pnpm", "start"]pnpm build собирает общие пакеты, веб-интерфейс, API, Runtime, Package-pool и архивы сервисов Desktop с манифестом обновлений. pnpm start запускает API, Runtime и Package-pool.
Первый запуск
bash
pnpm migrate:apply # миграции базы
pnpm seed:api # первый администратор из SEED_ADMIN_*
pnpm startВ Kubernetes миграции удобно выполнять init-контейнером из того же образа.
Локально для проверки
bash
pnpm install
cp .env.example .env
pnpm deps:up # PostgreSQL и OnlyOffice в Docker
pnpm migrate:apply
pnpm seed:api
pnpm dev # API, Runtime, Package-pool и интерфейс с горячей перезагрузкойЛокальный режим Desktop без клиента: pnpm dev-loc. Он использует отдельную папку данных ~/.eva-dev.
CI
Пайплайн подключает общие шаблоны сервисов компании и добавляет свои стадии:
| Стадия | Что делает |
|---|---|
| Проверки | Линтер, типы, тесты |
| Сборка образа | Образ платформы |
| Desktop: Linux | AppImage, собранный на Ubuntu 22.04 для совместимости со старыми дистрибутивами |
| Desktop: Windows | Установщик NSIS .exe |
Сборки Desktop выпускаются из веток разработки и тегов. Сервисы Desktop, которые клиент скачивает и обновляет сам, отдаёт API платформы по адресу /api/desktop/services/*, поэтому каталог сборок должен попадать в образ или том. Путь переопределяется EVA_DESKTOP_ARTIFACTS_DIR.
Полезные команды
| Команда | Что делает |
|---|---|
pnpm migrate:apply | Применить миграции |
pnpm seed:api | Создать администратора |
pnpm lint, pnpm type-check | Проверки кода |
pnpm start:api | Только API, если Runtime уже запущен |