Files
microdao-daarion/NODA1-SAFE-DEPLOY.md

3.7 KiB
Raw Blame History

NODA1 Safe Deploy (Canonical Workflow)

Ціль: синхронізувати ноут ↔ GitHub ↔ NODA1 ↔ реальний Docker-стек так, щоб:

  • не ламати працюючий прод;
  • не плодити "невидимі" гілки;
  • не мати unrelated history на сервері;
  • мати один канонічний стан коду та документації.

Канонічна правда: origin/main (GitHub). Усе інше або runtime (Docker), або secrets поза git.


1) Ролі директорій на NODA1

На NODA1 використовуємо один deploy root:

  • /opt/microdao-daarioncanonical deployment checkout (runtime source of truth).
  • /root/microdao-daarion — не runtime-tree (marker/історичні артефакти), не використовувати для deploy.

Ціль: не мати дубльованих runtime дерев і уникнути deployment drift.


2) Golden Rules (не порушувати)

  1. Не редагувати код/доки "на проді руками", окрім аварійної ситуації.
  2. Не створювати гілки на сервері; сервер не місце для розробки.
  3. Для docker compose завжди використовувати один і той самий project name: -p microdao-daarion.
  4. Секрети (токени/паролі) не комітяться; для них тримати *.example + короткий опис, де лежить на сервері.

3) Нормальний (правильний) цикл змін

A) На ноуті

  1. Зміни в коді/доках → PR/merge в origin/main.
  2. Після merge: оновити PROJECT-MASTER-INDEX.md, якщо змінювались сервіси/порти/шляхи.

B) На NODA1: синхронізація коду (без простою)

ssh root@144.76.224.179
cd /opt/microdao-daarion
git fetch origin
git pull --ff-only
git rev-parse --short HEAD

C) Deploy одного сервісу (мінімальний ризик)

Приклад: router

cd /opt/microdao-daarion

docker compose -p microdao-daarion -f docker-compose.node1.yml build router
docker compose -p microdao-daarion -f docker-compose.node1.yml up -d --no-deps --force-recreate router

curl -fsS http://127.0.0.1:9102/health

Аналогічно для gateway:

docker compose -p microdao-daarion -f docker-compose.node1.yml build gateway
docker compose -p microdao-daarion -f docker-compose.node1.yml up -d --no-deps --force-recreate gateway

curl -fsS http://127.0.0.1:9300/health

4) Runtime snapshot (звірка "реальної архітектури")

Після деплою (або перед ним) зробити snapshot:

cd /opt/microdao-daarion
./scripts/node1/snapshot_node1.sh > "/opt/backups/node1_snapshot_$(date +%Y%m%d-%H%M%S).txt"
/opt/microdao-daarion/ops/drift-check.sh

Це дає:

  • який git commit реально задеплоєний;
  • які контейнери/образи/health активні;
  • базові health endpoints.

5) Якщо на NODA1 знову з’явились конфлікти git pull

Не робити rebase у прод-директорії.

Правильний шлях:

  1. cd /opt/microdao-daarion && git fetch origin
  2. Звірити локальні правки: git status --short
  3. Якщо є emergency hotfix на сервері: заархівувати diff і перенести в PR.
  4. Далі git pull --ff-only і деплой тільки з /opt/microdao-daarion.