first cycle lab release

This commit is contained in:
2026-10-04 00:30:09 +07:00
parent 85f6897365
commit d134daafd8
92 changed files with 5623 additions and 9 deletions
+47
View File
@@ -0,0 +1,47 @@
# Rollback — Phase 8
Команды работают по SSH с root из `platform/config.yaml`. При необходимости
передайте `--ssh-config FILE` и `--remote-node /absolute/path/to/node`.
```bash
./mcpack rollback
./mcpack rollback-pack 0.0.4
```
Без подтверждения это только чтение: active/previous, actual binding, состояния
операций и список snapshots с временем и исходным релизом. Нет загрузки agent,
блокировки, остановки сервера или сборки. Список не заменяет проверку snapshot.
```bash
./mcpack rollback-pack 0.0.4 --confirm-compatible
./mcpack rollback --backup SNAPSHOT_ID --accept-progress-loss
```
Первый режим запускает сохранённый полный релиз с текущим миром. Оператор
подтверждает совместимость модов и мира; SemVer её не доказывает. Ручные изменения
managed configs блокируют перезапись, если target не содержит ровно эти изменения.
Второй режим восстанавливает весь runtime и исходный релиз snapshot. Прогресс
после указанного времени исчезает из активного runtime, включая данные модов.
Архив, inventory и release проверяются до остановки; распаковка происходит в
отдельном каталоге. Текущий runtime переносится в `retired-runtimes/UUID/runtime`,
а не удаляется. Дополнительно перед обоими режимами создаётся проверенный backup
текущего состояния при остановленном сервере под общей блокировкой.
`.env` и секреты сохраняются. Явный `MC_BIND_ADDRESS` действует и для старого
Compose через временный port overlay; immutable release не переписывается.
Pointers обновляются только после успешного startup/health. Состояние записывается
в `rollback-state.json`, предыдущий deployment — в `operation-history/`.
После неудачного deploy snapshot recovery определяет применённый релиз по binding,
даже если active ещё указывает на предыдущий. Pack-only в таком состоянии запрещён.
При ошибке rollback сервер останавливается; автоматического запуска старой сборки
на изменённом мире нет. Незавершённый rollback блокирует следующие операции.
Для ручного восстановления после ошибки сначала изучите state, binding,
diagnostics и оба pointers. Сохраните current backup, retired runtime и staged
restore. Восстановите проверенный snapshot в отдельный root по [backups.md](backups.md),
с host settings этого сервера; удалите остановленный старый контейнер и проверьте
source release и health восстановленной копии. Завершать failed state можно лишь
после сверки фактического binding и pointers; удаление state само по себе не recovery.
Backups и retired runtime автоматически не очищаются.