first cycle lab release
This commit is contained in:
@@ -6,7 +6,9 @@
|
||||
|
||||
Платформа должна быть оптимизирована под:
|
||||
|
||||
- Prism Launcher как клиентский лаунчер.
|
||||
- пользовательские модпаки на NeoForge и Forge;
|
||||
- запуск без обязательного Microsoft/Mojang-аккаунта и без онлайн-проверки сессии;
|
||||
- Prism Launcher как первоначальный клиентский лаунчер.
|
||||
- Docker Compose как серверный runtime.
|
||||
- удалённый доступ к серверу по SSH.
|
||||
- Git как источник истины для описания сборки и конфигурации.
|
||||
@@ -28,6 +30,8 @@
|
||||
|
||||
Не разрабатывать собственный resolver зависимостей Minecraft-модов без реальной необходимости.
|
||||
|
||||
Авторизация аккаунтов не является задачей платформы. Целевой сервер использует online-mode=false и enforce-secure-profile=false; для Prism допускается offline-аккаунт/Launch Offline. NeoForge и Forge — целевые loader; проверка Fabric не заменяет их integration spike.
|
||||
|
||||
---
|
||||
|
||||
# 2. Основная архитектура
|
||||
@@ -447,6 +451,8 @@ services:
|
||||
EULA: "${MC_EULA:?Set MC_EULA after accepting the Minecraft EULA}"
|
||||
MEMORY: "${MC_MEMORY:-8G}"
|
||||
TYPE: MODRINTH
|
||||
ONLINE_MODE: "false"
|
||||
ENFORCE_SECURE_PROFILE: "false"
|
||||
MODRINTH_MODPACK: /modpack/friday-minecraft-0.4.0.mrpack
|
||||
volumes:
|
||||
- ${MC_ROOT:?Set absolute server root}/runtime:/data
|
||||
@@ -548,6 +554,8 @@ runtime/
|
||||
|
||||
Manifest содержит управляемые пути. Удалять только файлы прежнего релиза; неизвестные файлы не удалять молча. Для конфигов, изменяемых самим runtime, определить в spike политику replace, seed-only или preserve. Проверить defaultconfigs и datapacks на существующем мире.
|
||||
|
||||
Не определять тип или владельца конфига только по директории: в проверяемом NeoForge 1.21.1 серверные конфиги создаются в `runtime/config/`. Путь, поддержку `defaultconfigs/` и per-world overrides проверять для закреплённого loader; результаты одной ветки не переносить автоматически на Forge.
|
||||
|
||||
Не коммитить runtime-generated файлы автоматически.
|
||||
|
||||
В будущем добавить явную команду для переноса полезных runtime-изменений обратно в source.
|
||||
@@ -949,7 +957,8 @@ mcpack doctor --remote
|
||||
Задачи:
|
||||
|
||||
- создать минимальный packwiz pack;
|
||||
- добавить один Modrinth-мод;
|
||||
- выбрать и закрепить NeoForge или Forge и совместимую версию Minecraft;
|
||||
- добавить минимальный совместимый набор Modrinth-модов, включая gameplay-мод и client-only мод;
|
||||
- экспортировать `.mrpack`;
|
||||
- импортировать `.mrpack` в Prism;
|
||||
- запустить совместимый modded server через `itzg/minecraft-server`;
|
||||
@@ -969,19 +978,21 @@ mcpack doctor --remote
|
||||
docs/spike-results.md
|
||||
```
|
||||
|
||||
Не писать основной CLI до подтверждения integration path. Минимальные скрипты, Compose и каркас для spike допустимы. Prism import и подключение требуют реальной GUI-сессии и учётной записи игрока: при их отсутствии отметить проверки pending, а не passed.
|
||||
Не писать основной CLI до подтверждения integration path. Минимальные скрипты, Compose и каркас для spike допустимы. Prism import и подключение требуют реальной GUI-сессии; проверять offline-аккаунт/Launch Offline с сервером online-mode=false. При отсутствии GUI отметить проверки pending, а не passed.
|
||||
|
||||
Acceptance criteria:
|
||||
|
||||
- Prism импортирует сгенерированный pack;
|
||||
- сервер успешно запускается;
|
||||
- modded client подключается к серверу;
|
||||
- modded client с целевым loader подключается к серверу без онлайн-проверки аккаунта;
|
||||
- runtime-файлы существуют как обычные host-файлы.
|
||||
|
||||
---
|
||||
|
||||
## Phase 1 — Оформление каркаса после spike
|
||||
|
||||
Статус: завершена для NeoForge 1.21.1. Каркас и проверка чистого локального clone описаны в `docs/phase1-results.md`. Platform manifest подключается к командам в Phase 2.
|
||||
|
||||
Создать:
|
||||
|
||||
- структуру репозитория;
|
||||
@@ -1006,6 +1017,8 @@ docker compose config
|
||||
|
||||
## Phase 2 — Build command
|
||||
|
||||
Статус: завершена. `./mcpack build` читает platform config и создаёт полный development release 0.0.4; `--release` требует чистого Git worktree. Проверки и текущие ограничения описаны в `docs/phase2-results.md`, контракт — в `docs/build.md`.
|
||||
|
||||
Реализовать:
|
||||
|
||||
```bash
|
||||
@@ -1043,6 +1056,8 @@ dist/<name>-<version>/manifest.json
|
||||
|
||||
## Phase 3 — Управление модами
|
||||
|
||||
Статус: завершена. Mod wrappers сохраняют вывод/prompts/exit code packwiz. Реальные add/remove/update/update --all и четыре full build проверены в тестовом clone; результаты — `docs/phase3-results.md`, контракт — `docs/mods.md`.
|
||||
|
||||
Предоставить тонкие wrappers:
|
||||
|
||||
```bash
|
||||
@@ -1064,6 +1079,8 @@ Acceptance criteria:
|
||||
|
||||
## Phase 4 — Server runtime
|
||||
|
||||
Статус: завершена. Full release 0.0.4 проверен на пустом runtime через `scripts/server.sh`: pinned Minecraft/NeoForge/image, host bind mounts, restart/recreate без потери мира. Основной Phase 0 сервер не менялся. Результаты — `docs/phase4-results.md`, контракт — `docs/runtime.md`.
|
||||
|
||||
Создать Docker runtime, который:
|
||||
|
||||
- использует pinned Minecraft version;
|
||||
@@ -1084,6 +1101,8 @@ docker compose up -d
|
||||
|
||||
## Phase 5 — Backups и восстановление
|
||||
|
||||
Статус: завершена. `./mcpack backup` сохраняет весь остановленный runtime и исходный полный релиз под общей lifecycle lock; `restore` проверяет snapshot и восстанавливает только в новый root. Ошибка backup блокирует apply callback. Реальный backup/ошибка tar/запуск восстановленного NeoForge проверены на отдельном сервере; результаты — `docs/phase5-results.md`, инструкция — `docs/backups.md`.
|
||||
|
||||
До remote deployment реализовать раздел 16: блокировку, остановку, backup и проверенную процедуру восстановления.
|
||||
|
||||
Acceptance criteria: ошибка backup блокирует применение; snapshot восстанавливается в отдельный каталог; данные модов вне world сохраняются.
|
||||
@@ -1092,12 +1111,16 @@ Acceptance criteria: ошибка backup блокирует применение
|
||||
|
||||
## Phase 6 — Healthcheck
|
||||
|
||||
Статус: завершена. `scripts/server.sh up/start/restart --wait` и `health` проверяют штатный mc-health, свежий Minecraft status query и окно стабильности. Реальные timeout, crash с exit 137 и restart loop проверены на отдельных test roots; ошибки возвращают non-zero с report/logs и recovery state. Результаты — `docs/phase6-results.md`, контракт — `docs/health.md`.
|
||||
|
||||
Реализовать раздел 18. Успешный старт возвращает 0; crash, restart loop и timeout — non-zero с указанием logs.
|
||||
|
||||
---
|
||||
|
||||
## Phase 7 — SSH Deployment
|
||||
|
||||
Статус: завершена для проверенного NeoForge 1.21.1. `mcpack deploy` использует SSH/rsync, общую host lock, immutable checksums, проверку ручных конфликтов, backup-before-apply и healthcheck перед active/previous pointers. Полный update flow проверен на локальном SSH-стенде; clean release 0.0.4 реально установлен и healthy на crab@192.168.1.61:2228 в отдельном root. Повторный deploy — no-op. Результаты — `docs/phase7-results.md`, контракт — `docs/deploy.md`.
|
||||
|
||||
Реализовать полный flow раздела 12 с готовыми backup и healthcheck.
|
||||
|
||||
Acceptance criteria:
|
||||
@@ -1114,7 +1137,8 @@ Acceptance criteria:
|
||||
|
||||
## Phase 8 — Rollback
|
||||
|
||||
Реализовать rollback предыдущего release.
|
||||
Статус: завершена. Реализованы pack-only и snapshot rollback по SSH без build.
|
||||
Результаты и ограничения: [docs/phase8-results.md](docs/phase8-results.md).
|
||||
|
||||
Acceptance criteria:
|
||||
|
||||
@@ -1124,13 +1148,21 @@ mcpack rollback
|
||||
|
||||
без указания режима ничего не меняет. Явный rollback использует сохранённый полный релиз без повторного build; pack-only требует подтверждения совместимости.
|
||||
|
||||
Восстановление persistent snapshot может оставаться ручным, но процедура обязательна и проверяется на практике.
|
||||
Восстановление persistent snapshot автоматизировано и проверено на изолированном
|
||||
SSH/Docker-стенде. Оба режима требуют явного подтверждения и проверенного backup
|
||||
текущего состояния; pointers меняются после health. Ручной recovery после ошибки
|
||||
описан в [docs/rollback.md](docs/rollback.md).
|
||||
|
||||
---
|
||||
|
||||
## Phase 9 — Release workflow
|
||||
|
||||
Реализовать:
|
||||
Статус: завершена. Candidate build, version commit, чистый финальный build,
|
||||
checksums и annotated tag проверены с настоящим packwiz в отдельном Git clone.
|
||||
Результаты: [docs/phase9-results.md](docs/phase9-results.md).
|
||||
Workflow и recovery: [docs/releases.md](docs/releases.md).
|
||||
|
||||
Реализовано:
|
||||
|
||||
```bash
|
||||
mcpack release <version>
|
||||
@@ -1579,7 +1611,7 @@ mcpack logs
|
||||
|
||||
- client artifact импортируется в Prism;
|
||||
- сервер запускается из того же определения сборки;
|
||||
- клиент может подключиться;
|
||||
- клиент на NeoForge/Forge может подключиться без Microsoft/Mojang-аккаунта;
|
||||
- моды версионируются через packwiz;
|
||||
- server files хранятся как обычные директории на host;
|
||||
- world переживает recreation контейнера;
|
||||
|
||||
Reference in New Issue
Block a user