Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
4.6 KiB
AdamuSw — Proje Runbook
Bu depo, OpenMU'nun kendi ürün fork'umuz (AdamuSw). Amaç: Castle Siege + custom özellikler (remote-NPC vb.) burada geliştirilir, kendi Docker image'imiz kaynaktan derlenir, upstream OpenMU güncellemeleri düzenli merge edilir.
Bu dosya additive'dir (upstream'in
README.md'sini ezmez) —git merge upstreamsırasında çakışmaz.
1. Ne yaptık (Faz 0a — 2026-07-14)
Eskiden: stock munique/openmu image kullanılıyor, custom kod ayrı derlenip DLL olarak container'a enjekte ediliyordu (→ sürüm uyuşmazlığı / MissingMethod tuzağı).
Yenisi: her şey tek kaynaktan derleniyor.
- Baseline — güncel upstream OpenMU (
b5a0961) temiz olarak (git archive, sadece tracked dosyalar) bu depoya alındı. - Remote'lar —
origin= Gitea (AdamuSw),upstream= MUnique/OpenMU (güncelleme takibi için). - Kendi image —
src/Startup/Dockerfile'danadamu-openmu:dev(388MB) derlendi. - Lokal doğrulama — postgres + image ayağa kaldırıldı: admin panel
8080→ HTTP 200, GameServer'lar dinliyor (55901-55906), ConnectServer 44405/44406, hata yok. - DockerHub —
atfatmc/adamu-openmu:latest+:b5a0961push edildi, temiz pull ile doğrulandı.
Sonraki: Faz 0b (remote-NPC portu) → sonra Castle Siege (P1-P5). Tasarım/planlar: docs/superpowers/.
2. Depo topolojisi
| Konum | Rol | Git |
|---|---|---|
AdamuSw/ (bu depo) |
Ürün fork — CS + custom kod | origin=Gitea, upstream=MUnique |
../OpenMU/ |
Temiz upstream referansı | origin=MUnique |
d:/OpenMU/ |
Eski fork "AdaMu" — remote-NPC diff kaynağı | origin=Gitea/AdaMu |
Remote'lar:
origin https://gitea.atfatmc.com/atfatmc/AdamuSw.git (ürün)
upstream https://github.com/MUnique/OpenMU.git (referans)
3. Günlük iş akışı (komutlar)
3.1 Upstream güncellemelerini al
cd AdamuSw
git fetch upstream
git merge upstream/master
# Conflict çıkarsa: sadece bizim dokunduğumuz core dosyalarda çıkar.
# - `// ADAMU-CUSTOM` işaretlerini ara, bizim kodu koru + upstream'in yenisini birleştir.
# - Dokunulan core dosyalar: docs/superpowers/specs içindeki "touch registry"ye bak.
# Merge sonrası regresyon: (Faz 0b'den sonra) dotnet test ile NPC+CS bozulmamış mı doğrula.
git push origin main
3.2 Image derle
cd AdamuSw/src
docker build -f Startup/Dockerfile -t atfatmc/adamu-openmu:latest .
# İstersen sürüm tag'i de: -t atfatmc/adamu-openmu:<upstream-commit-kısa>
Not (lokal
dotnet buildyaparsan): MUTLAKA-p:ci=trueekle:dotnet build Startup/MUnique.OpenMU.Startup.csproj -c Release -p:ci=trueBu, Persistence.csproj'daki source-generator PreBuild adımını atlar (Generated.cs zaten commit'li).
ci=truevermezsendotnet run --no-buildsıralama hatası alırsın. Dockerfile bunu zaten yapar.
3.3 Lokalde test et
cd AdamuSw/deploy-adamu
docker compose -f docker-compose.local.yml up -d
# boot logları:
docker compose -f docker-compose.local.yml logs -f openmu-startup
# admin panel: http://localhost:8080 (HTTP 200/302 beklenir)
# durdur:
docker compose -f docker-compose.local.yml down
3.4 DockerHub'a yayınla
docker push atfatmc/adamu-openmu:latest
# doğrula (başka makinede de aynısı):
docker pull atfatmc/adamu-openmu:latest
3.5 Production'a deploy (Coolify + Traefik)
- Dosya:
deploy-adamu/docker-compose.prod.yml(mevcut AdaMu prod kurulumundan uyarlandı; TEK fark image bizim build). - Image:
${OPENMU_IMAGE:-atfatmc/adamu-openmu:latest}— Coolify'daOPENMU_IMAGEenv'i ile override edilebilir. - Coolify'da yeni image'i pull edip stack'i güncelle.
coolifyexternal network + Traefik label'ları (HTTPS, basicauthadios, Host${SERVICE_FQDN_OPENMU_STARTUP}, 8080) korundu.
⚠️ DİKKAT: DockerHub'daki mevcut image şu an temiz upstream — "her yerden NPC aç" özelliğini HENÜZ içermiyor. Production'a geçmeden önce Faz 0b (remote-NPC portu) tamamlanmalı; mevcut prod bu özelliğe bağımlı.
4. Deploy dosyaları
| Dosya | Ne için |
|---|---|
deploy-adamu/docker-compose.local.yml |
Lokal test (postgres + image, direkt 8080, Traefik yok) |
deploy-adamu/docker-compose.prod.yml |
Production (Coolify + Traefik, kendi image) |
Bunlar upstream'in deploy/ klasörünü ezmeden ayrı deploy-adamu/ klasöründe tutulur → merge çakışması olmaz.
5. Tasarım & planlar
- Castle Siege çatı tasarımı:
docs/superpowers/specs/2026-07-14-castle-siege-design.md - Faz 0a planı (bu iş):
docs/superpowers/plans/2026-07-14-phase0a-bootstrap-self-built-image.md