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

102 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# NODA1 Safe Deploy (Canonical Workflow)
**Ціль:** синхронізувати ноут ↔ GitHub ↔ NODA1 ↔ реальний Docker-стек так, щоб:
- не ламати працюючий прод;
- не плодити "невидимі" гілки;
- не мати `unrelated history` на сервері;
- мати один канонічний стан коду та документації.
**Канонічна правда:** `origin/main` (GitHub). Усе інше або runtime (Docker), або secrets поза git.
---
## 1) Ролі директорій на NODA1
На NODA1 використовуємо **один deploy root**:
- `/opt/microdao-daarion`**canonical 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: синхронізація коду (без простою)
```bash
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
```bash
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:
```bash
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:
```bash
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`.