Qadam Roadmap
проектdocs/Agents/rules/ci-deployment.md

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 запускается через systemd unit qadam-api.
  • Web запускается через systemd unit qadam-web.
  • Roadmap-портал запускается через отдельный systemd unit qadam-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:

  1. Обновить checkout qadam-core
  2. Применить Prisma migrations
  3. Пересобрать backend
  4. Обновить OpenAPI artifact
  5. Перезапустить qadam-api

Frontend/package change:

  1. Обновить checkout qadam-web
  2. Если менялся контракт — синхронизировать openapi/openapi.json
  3. Запустить pnpm generate:api-contract
  4. Пересобрать apps/web и, если change package затрагивает портал документации, apps/roadmap
  5. Перезапустить qadam-web
  6. Если change package затрагивает портал документации — перезапустить qadam-roadmap

5. Проверки после деплоя

  • systemctl status qadam-api qadam-web qadam-roadmap nginx
  • curl https://qadam.2fab.app/api/v1/health
  • curl -I https://qadam.2fab.app/api/docs
  • curl -I https://qadam.2fab.app
  • curl -I https://qadam.2fab.app/roadmap
  • curl -I -u <login>:<password> https://qadam-roadmap.2fab.app
  • curl -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-контуром.