-
Notifications
You must be signed in to change notification settings - Fork 0
deployment
Sergey Bogorad edited this page Jul 29, 2026
·
5 revisions
Три GitHub Actions workflow в .github/workflows/:
| Workflow | Триггер | Назначение |
|---|---|---|
ci.yml |
push/PR на main
|
TypeScript lint → Vitest (357 тестов) → Vite build → Playwright E2E |
deploy.yml |
merge в main
|
Деплой на продакшн сервер |
android.yml |
push на main + workflow_dispatch
|
Сборка debug APK + rolling release android-latest
|
локальные изменения
→ git commit
→ git push / GitHub PR
→ merge или approved branch
→ сервер: git pull
→ pnpm install --frozen-lockfile
→ pnpm build
→ restart service
→ verify /api/health и внешний HTTPS smoke
Прямые правки на проде запрещены (кроме задокументированных emergency hotfixes).
curl https://kognitika.ru/api/healthОтвет включает buildId = short hash коммита. Deploy workflow читает внутренний health-check порт из серверного .env PORT (fallback 3006).
docker compose up --build- App:
3006:3006 - PostgreSQL:
5432:5432
Каждый пуш в main обновляет GitHub Release android-latest с kognitika-debug.apk (~4.8 MB):
- Скачать: https://github.com/xodapi/kognitika/releases/tag/android-latest
- Автоматически публикуется job
github-releaseвandroid.yml
Ручной запуск через workflow_dispatch:
- GitHub Actions →
Android Native Build→Run workflow release: true- Job
releaseв окруженииandroid-releaseсобирает.aabс подписью (keystore из секретов)
Secrets требуемые для release:
ANDROID_KEYSTORE_BASE64ANDROID_KEYSTORE_PASSWORDANDROID_KEY_ALIASANDROID_KEY_PASSWORD
-
Canonical port: 3006 (
.env.example,server.ts, Dockerfile, docker-compose.yml, README, deployment config) -
Express + Vite:
server.tsотдаёт и API, и статику production-билда - Socket.io: Real-time дуэли и SymbolChat на том же процессе
-
CORS: Allowlist через
CORS_ORIGIN(comma-separated). Wildcard только в dev сCORS_ALLOW_DEV_WILDCARD=true. Продакшн без allowlist = fail-closed. - Security headers: Helmet, rate-limit, JWT auth, admin role проверяется серверно (не доверяет JWT alone).
Разрешено только когда продакшн активно сломан и координатор явно одобрил:
- Timestamped backup перед правкой
- Запись точных файлов и команд
- Немедленное воспроизведение в git, commit, push, повторный деплой через canonical flow
- Отчёт временного патча как
[WARNING]до синхронизации git и продакшн