-
-
Notifications
You must be signed in to change notification settings - Fork 11
Upgrading
One-sentence purpose: how to move an existing ci4ms installation to a newer version, manually or via the in-app updater, without losing data.
Back up public/uploads/, your database, and .env before any major upgrade. This is a standing recommendation in the project's own deployment checklist, not upgrade-specific advice — treat every upgrade as a "major" one unless you know otherwise.
-
Pull or deploy the new code (
git pull, or replace the release archive), thencomposer installif dependencies changed. -
Run any pending database migrations across every module:
php spark migrate --all
-
Clear all caches so stale settings/menus/permissions don't linger:
php spark cache:clear
-
If the release added new backend routes or permissions (check CHANGELOG.md for the version you're moving to), run a Module Scan from the Methods section of the backend so the new routes are recognized by the permission filter — otherwise they 403 for everyone, including superadmin, until scanned.
ci4ms also ships a backend "one-click update" panel (Modules\Settings) that checks GitHub releases and can apply an update directly. It is fail-closed by default: every file it writes must be listed in a release manifest carrying a detached Ed25519 signature from a key your installation already trusts, and the repository ships with an empty keyring — so auto-update does nothing until you deliberately add a publisher's verified public key. Until then, using the manual migrate --all / cache:clear path above is the only way to upgrade.
If you do configure trust, the updater cannot be used to downgrade an installation, and every file update is checked against a SHA-256 entry in the signed manifest before anything is written. See README.md — Release Signing & Trusted Keys and docs/architecture.md — Auto-Update & Release Signing for the full trust model, including how to check which keys your own installation currently trusts (backend Settings page).
Check the specific version's CHANGELOG.md entry for any manual follow-up steps — some past releases required an additional Module Scan or cache clear beyond the standard steps above (for example, when a release added new opt-in tables or permission-gated screens).
Herhangi bir büyük yükseltmeden önce public/uploads/, veritabanınızı ve .env dosyasını yedekleyin. Bu, projenin kendi deployment kontrol listesindeki genel bir tavsiyedir, yükseltmeye özel değildir — aksini bilmediğiniz sürece her yükseltmeyi "büyük" kabul edin.
-
Yeni kodu çekin veya deploy edin (
git pull, ya da release arşivini değiştirin), bağımlılıklar değiştiysecomposer installçalıştırın. -
Her modülde bekleyen veritabanı migration'larını çalıştırın:
php spark migrate --all
-
Eski ayar/menü/izin verilerinin kalmaması için tüm cache'leri temizleyin:
php spark cache:clear
-
Sürüm yeni backend route'ları veya izinleri eklediyse (geçtiğiniz sürüm için CHANGELOG.md dosyasını kontrol edin), izin filtresinin yeni route'ları tanıması için backend'deki Methods bölümünden bir Module Scan çalıştırın — aksi halde taranana kadar bu route'lar superadmin dahil herkes için 403 döner.
ci4ms ayrıca GitHub release'lerini kontrol edip doğrudan güncelleme uygulayabilen bir backend "tek tıkla güncelleme" paneli (Modules\Settings) ile gelir. Bu panel varsayılan olarak fail-closed'dır: yazacağı her dosya, kurulumunuzun zaten güvendiği bir anahtardan gelen ayrık bir Ed25519 imzası taşıyan bir release manifest'inde listelenmiş olmalıdır ve repo boş bir keyring ile gelir — yani siz bilinçli olarak yayıncının doğrulanmış bir açık anahtarını eklemedikçe otomatik güncelleme hiçbir şey yapmaz. O zamana kadar, yukarıdaki manuel migrate --all / cache:clear yolu tek yükseltme yöntemidir.
Güveni yapılandırırsanız, updater bir kurulumu düşürmek (downgrade) için kullanılamaz ve her dosya güncellemesi, hiçbir şey yazılmadan önce imzalı manifest içindeki bir SHA-256 girdisine karşı kontrol edilir. Tam güven modeli, kurulumunuzun şu anda hangi anahtarlara güvendiğini nasıl kontrol edeceğiniz dahil (backend Settings sayfası), için bkz. README.md — Release Signing & Trusted Keys ve docs/architecture.md — Auto-Update & Release Signing.
Manuel takip adımları için ilgili sürümün CHANGELOG.md girdisini kontrol edin — bazı geçmiş sürümler, yukarıdaki standart adımların ötesinde ek bir Module Scan veya cache temizleme gerektirdi (örneğin bir sürüm yeni opt-in tablolar veya izin korumalı ekranlar eklediğinde).