6.4 KiB
6.4 KiB
🚀 DEPLOY CHECKLIST — daarion.space
Дата: 2024-11-30
Версія: MVP Node Self-Healing + DAGI Audit + Agent Prompts
📋 Що деплоїмо
Backend (city-service)
- ✅ Node Registry + Self-Healing API
- ✅ Improved
get_all_nodes()з fallback - ✅ Agent Prompts Runtime API
- ✅ DAGI Router Audit API
- ✅ Node Agents API (Guardian/Steward)
Frontend (apps/web)
- ✅ Node Directory з покращеним error handling
- ✅ Node Cabinet з метриками
- ✅ DAGI Router Card
- ✅ Node Metrics Card
Scripts
- ✅
check-invariants.py— перевірка інваріантів - ✅
node-bootstrap.sh— самореєстрація ноди - ✅
node-guardian-loop.py— self-healing loop
Міграції (НОВІ)
034_agent_prompts_seed.sql035_agent_dagi_audit.sql036_node_metrics_extended.sql037_node_agents_complete.sql038_agent_prompts_full_coverage.sql039_node_registry_self_healing.sql
🔧 КРОК 1: Локально — Закомітити та запушити
cd /Users/apple/github-projects/microdao-daarion
# Додати всі зміни
git add .
# Закомітити
git commit -m "feat: Node Self-Healing, DAGI Audit, Agent Prompts, Infra Invariants
- Node Registry for self-healing (migration 039)
- Improved get_all_nodes() with robust fallback
- Agent Prompts Runtime API for DAGI Router
- DAGI Router Audit endpoints
- Node metrics and Guardian/Steward APIs
- check-invariants.py for deploy verification
- node-bootstrap.sh for node self-registration
- node-guardian-loop.py for continuous self-healing
- Updated Node Directory UI with better error handling
- Node Cabinet with metrics cards and DAGI Router card"
# Запушити
git push origin main
🖥️ КРОК 2: На сервері NODE1 (Hetzner)
2.1. SSH на сервер
ssh root@<NODE1_IP>
# або через ваш алиас
ssh node1
2.2. Перейти в директорію проєкту
cd /opt/daarion
# або ваш шлях до проєкту
2.3. Оновити код
git pull origin main
2.4. Застосувати міграції
# Підключитися до PostgreSQL
docker exec -it daarion-postgres psql -U daarion_user -d daarion
# Або напряму через psql
PGPASSWORD=<password> psql -h localhost -U daarion_user -d daarion
# Виконати міграції послідовно:
\i migrations/034_agent_prompts_seed.sql
\i migrations/035_agent_dagi_audit.sql
\i migrations/036_node_metrics_extended.sql
\i migrations/037_node_agents_complete.sql
\i migrations/038_agent_prompts_full_coverage.sql
\i migrations/039_node_registry_self_healing.sql
# Вийти
\q
2.5. Перебілдити і перезапустити сервіси
# Зупинити сервіси
docker compose -f docker-compose.all.yml down
# Перебілдити
docker compose -f docker-compose.all.yml build
# Запустити
docker compose -f docker-compose.all.yml up -d
2.6. Перевірити здоров'я
# Перевірити статус контейнерів
docker ps | grep daarion
# Перевірити логи city-service
docker logs -f daarion-city-service --tail 100
# Перевірити /healthz
curl http://localhost:7001/healthz
# Перевірити /public/nodes
curl http://localhost:7001/public/nodes | jq
🔍 КРОК 3: Перевірка інваріантів
# На сервері (або локально якщо є доступ)
python3 scripts/check-invariants.py --base-url http://localhost:7001
# Очікуваний результат:
# ✅ ALL INVARIANTS PASSED
# або
# ⚠️ WARNINGS (деякі можуть бути нормальними)
🧪 КРОК 4: Smoke-тести
# Якщо встановлено pytest
pytest tests/test_infra_smoke.py -v --base-url http://localhost:7001
🌐 КРОК 5: Перевірка в браузері
-
Node Directory: daarion.space/nodes
- Повинні відображатися NODE1 і NODE2
- Без "Помилка завантаження нод"
-
Node Cabinet: daarion.space/nodes/node-1-hetzner-gex44
- Метрики CPU/GPU/RAM/Disk
- DAGI Router Card
- Guardian/Steward агенти
-
Agents: daarion.space/agents
- System Prompts для агентів
🔄 КРОК 6 (опційно): Node Bootstrap
Якщо ноди не з'являються після міграції:
# На NODE1
NODE_ID=node-1-hetzner-gex44 \
NODE_NAME="NODE1 — Hetzner GEX44" \
NODE_ENVIRONMENT=production \
NODE_ROLES=production,gpu,ai_runtime,storage,matrix \
./scripts/node-bootstrap.sh
# На NODE2 (якщо потрібно)
NODE_ID=node-2-macbook-m4max \
NODE_NAME="NODE2 — MacBook Pro M4 Max" \
NODE_ENVIRONMENT=development \
NODE_ROLES=development,gpu,ai_runtime,testing \
./scripts/node-bootstrap.sh
❌ Rollback (якщо щось пішло не так)
# Відкотити код
git reset --hard HEAD~1
git push -f origin main
# На сервері
git pull origin main
docker compose -f docker-compose.all.yml down
docker compose -f docker-compose.all.yml up -d
📊 Очікуваний результат
Після успішного деплою:
| Компонент | URL | Очікуваний статус |
|---|---|---|
| Health | /healthz | {"status": "ok"} |
| Nodes | /public/nodes | {"items": [...], "total": 2} |
| Node Cabinet | /nodes/{id} | Метрики + DAGI + Agents |
| Invariants | check-invariants.py | ✅ PASSED |
🆘 Troubleshooting
"Failed to fetch nodes"
- Перевірити логи:
docker logs daarion-city-service - Перевірити чи є записи в node_cache:
SELECT * FROM node_cache; - Застосувати міграцію 039
"node_registry does not exist"
\i migrations/039_node_registry_self_healing.sql
"Ноди не відображаються"
# Перевірити node_cache
docker exec -it daarion-postgres psql -U daarion_user -d daarion -c "SELECT node_id, node_name FROM node_cache;"
# Якщо порожньо — запустити bootstrap
./scripts/node-bootstrap.sh