3.7 KiB
3.7 KiB
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 (не порушувати)
- Не редагувати код/доки "на проді руками", окрім аварійної ситуації.
- Не створювати гілки на сервері; сервер не місце для розробки.
- Для docker compose завжди використовувати один і той самий project name:
-p microdao-daarion. - Секрети (токени/паролі) не комітяться; для них тримати
*.example+ короткий опис, де лежить на сервері.
3) Нормальний (правильний) цикл змін
A) На ноуті
- Зміни в коді/доках → PR/merge в
origin/main. - Після 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 у прод-директорії.
Правильний шлях:
cd /opt/microdao-daarion && git fetch origin- Звірити локальні правки:
git status --short - Якщо є emergency hotfix на сервері: заархівувати diff і перенести в PR.
- Далі
git pull --ff-onlyі деплой тільки з/opt/microdao-daarion.