Files
AdamuSw/ADAMU.md
Acentech Dev 5d48b1512e
Some checks failed
.NET Core / build (push) Has been cancelled
docs: ADAMU.md project runbook (workflow commands + Faz 0a summary)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-14 21:17:33 +03:00

4.6 KiB
Raw Permalink Blame History

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 upstream sı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.

  1. Baseline — güncel upstream OpenMU (b5a0961) temiz olarak (git archive, sadece tracked dosyalar) bu depoya alındı.
  2. Remote'larorigin = Gitea (AdamuSw), upstream = MUnique/OpenMU (güncelleme takibi için).
  3. Kendi imagesrc/Startup/Dockerfile'dan adamu-openmu:dev (388MB) derlendi.
  4. 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.
  5. DockerHubatfatmc/adamu-openmu:latest + :b5a0961 push 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 build yaparsan): MUTLAKA -p:ci=true ekle:

dotnet build Startup/MUnique.OpenMU.Startup.csproj -c Release -p:ci=true

Bu, Persistence.csproj'daki source-generator PreBuild adımını atlar (Generated.cs zaten commit'li). ci=true vermezsen dotnet run --no-build sı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'da OPENMU_IMAGE env'i ile override edilebilir.
  • Coolify'da yeni image'i pull edip stack'i güncelle. coolify external network + Traefik label'ları (HTTPS, basicauth adios, 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