ci-deployment.md
Обновлён 1 апр. 2026 г., 12:41 · 0 комментариев
title: CI/CD и deployment rules impact: CRITICAL impactDescription: Фиксирует текущий production contour и целевой docker/image-based переход без ложных допущений tags: ci, cd, deployment, systemd, nginx, docker
Паспорт документа
- Статус документа: living standard
- Актуально на: 30 марта 2026 года
- Владелец: backend/platform-команда
- Пересмотр: при изменении инженерной практики, CI/CD, архитектурных правил или локального workflow
- Область применения: внутренние rule/reference-card документы для инженерной команды
- Связанные документы:
CI/CD и deployment rules
Impact: CRITICAL
Нельзя опираться на старые предположения про GitHub Actions + GHCR + Docker Compose как на текущий production truth. На 30 марта 2026 года канонический runtime другой.
1. Текущее состояние production
- Production работает из двух репозиториев:
qadam-coreиqadam-web. - API запускается через
systemdunitqadam-api. - Web запускается через
systemdunitqadam-web. - Roadmap-портал запускается через отдельный
systemdunitqadam-roadmap. - Внешний ingress обслуживает host-level
nginx. - TLS завершается на Let’s Encrypt / certbot.
- Docker/image-based delivery пока является целевым направлением, но не текущим каноническим runtime.
2. Текущий quality gate
Для qadam-core:
pnpm check-types
pnpm test
pnpm build
pnpm export:openapi
Repo-side workflow для этого gate живёт в .gitea/workflows/quality-gate.yml и должен оставаться зеркалом локального minimum gate.
Первый workflow run Quality Gate для qadam-core уже подтверждён в Gitea со статусом success на self-hosted runner qadam-core-runner-01.
Runner baseline теперь включает и disk-safety правило:
- runner cache и hostexecutor workspace должны жить в
/tmp, а не на корневом разделе; - канонические значения:
XDG_CACHE_HOME=/tmp/act_runner-cache,TMPDIR=/tmp/act_runner-tmp; /opt/act_runner/.cacheдопускается только как symlink в/tmp/act_runner-cache, а не как реальный cache-dir на/.
Для qadam-web:
pnpm generate:api-contract
pnpm check:api-contract
pnpm check-types
pnpm build
3. PR review и security gate
- Нетривиальные change packages в
qadam-coreдолжны идти через.gitea/PULL_REQUEST_TEMPLATE.md. - Repo-side quality gate не заменяет human review.
- Для auth/tokens/cookies, permissions, uploads/files, secrets/env, proxy/rate-limit и Prisma migrations обязателен отдельный security impact review.
- Если пакет меняет API-контракт, одновременно обязательны OpenAPI,
frontend-change-log.mdи checkpoints/changelog.
4. Текущий production deploy package
Backend/package change:
- Обновить checkout
qadam-core - Применить Prisma migrations
- Пересобрать backend
- Обновить OpenAPI artifact
- Перезапустить
qadam-api
Frontend/package change:
- Обновить checkout
qadam-web - Если менялся контракт — синхронизировать
openapi/openapi.json - Запустить
pnpm generate:api-contract - Пересобрать
apps/webи, если change package затрагивает портал документации,apps/roadmap - Перезапустить
qadam-web - Если change package затрагивает портал документации — перезапустить
qadam-roadmap
5. Проверки после деплоя
systemctl status qadam-api qadam-web qadam-roadmap nginxcurl https://qadam.2fab.app/api/v1/healthcurl -I https://qadam.2fab.app/api/docscurl -I https://qadam.2fab.appcurl -I https://qadam.2fab.app/roadmapcurl -I -u <login>:<password> https://qadam-roadmap.2fab.appcurl -u <login>:<password> https://qadam-roadmap.2fab.app/api/health
6. Канонические production paths
- API checkout:
/data/qadam-core - Web checkout:
/data/qadam-web - Repo-side CI workflow:
/data/qadam-core/.gitea/workflows/quality-gate.yml - PR review template:
/data/qadam-core/.gitea/PULL_REQUEST_TEMPLATE.md - Repo-side runner:
/opt/act_runner/qadam-core - Runner unit:
/etc/systemd/system/qadam-core-runner.service - Runner cache symlink:
/opt/act_runner/.cache -> /tmp/act_runner-cache - Env:
/etc/qadam/qadam.env - Roadmap env:
/etc/qadam/qadam-roadmap.env - API unit:
/etc/systemd/system/qadam-api.service - Web unit:
/etc/systemd/system/qadam-web.service - Roadmap unit:
/etc/systemd/system/qadam-roadmap.service
7. Что является целевым, но ещё не production truth
- Docker runtime для
qadam-coreиqadam-web - Image registry и versioned images
- Automated image-based rollback
- Полностью оформленный CI/CD pipeline для split-репозиториев с deployment automation поверх уже подтверждённого runner baseline
До завершения этого перехода нельзя писать rule-документы так, будто Docker Compose уже является каноническим production-контуром.