refactor: use one safe deployment path

Always stop, back up, migrate and check readiness instead of
maintaining image/config hash detection and selective updates.

Keep file locking, key preservation and interrupted recovery.
Repeated and frontend-only deployments may cause brief API downtime.
This commit was merged in pull request #3.
This commit is contained in:
2026-10-03 11:38:08 +03:00
parent 2f8163e53d
commit a56ed85230
3 changed files with 36 additions and 71 deletions
+6 -7
View File
@@ -131,12 +131,11 @@ Backups и `.deploy` всегда находятся рядом с фактич
1. Проверка тега, настроек, данных и CA; загрузка образов и проверка прав
runtime user. Ошибка до остановки сохраняет работающие сервисы.
2. Сравнение образов и конфигурации с реальными контейнерами. При исправной
неизменной установке — no-op. Если изменился только frontend, backend
продолжает работать, backup и migration не запускаются.
3. Если изменился backend или его конфигурация: stop → копия **всего** data
directory с WAL/SHM → migration → backend readiness. Неизменный frontend
не пересоздаётся; если меняется и он, запускается после готовности backend.
2. Stop backend → копия **всего** data directory с WAL/SHM → migration →
backend readiness. Только для `--init` пустой базы backup не требуется.
3. Запуск frontend после готовности backend. Каждый вызов выполняет этот путь,
включая повтор того же тега и frontend-only update. No-op/change detection
отсутствуют; приняты короткий простой API и дополнительный backup.
4. Успех записывается в `.deploy/current` только после проверки запуска.
Краткий простой допустим. После обновления проверьте через HTTPS deep link,
login/refresh, существующие карты и чтение зашифрованного подключения.
@@ -241,7 +240,7 @@ cp -a /opt/wealthledger/backups/CHOSEN_BACKUP/data /opt/wealthledger/data
```
Tests используют настоящий Git, backup-файлы и file locks, а Docker заменяют
управляемым double. Проверяются update/no-op, смена настроек, сохранение ключей,
управляемым double. Проверяются полные повторные updates, настройки, ключи,
ошибки pull/backup/migration/readiness, конкуренция и незавершённая операция.
Отдельная проверка реального Docker для restore: `bash tests/deploy.sh --docker-restore`.
Она создаёт временный project, заменяет bind-каталог и проверяет пересоздание