Güncellemeler
WebBlocks CMS'de güncellemeler sürüm tabanlı ve paket tabanlıdır.
Ortak İstemci Kaynağı
CMS, ortak Publisher Client çalışma zamanını src/Support/Updates/Client altında senkronize kaynak olarak taşır; özel Client Composer paketini gerektirmez. CMS adaptörleri veritabanı geçmişi, kurulu sürüm kalıcılığı, paket migration'ları, katalog onarımı ve tam yedekleri yönetir. Üretilen dosyaları doğrudan düzenlemeyin. Özel Client deposu temel kaynaktır; composer embed:sync-all kayıtlı kopyaları günceller, composer embed:check-all kök .publisher-client.json manifestiyle sapmayı saptar.
Temel Kurallar
- Kurulu sürüm, kuruluma uygulanan son gerçek sürümü yansıtır.
- Olağan kaynak geliştirme çalışması kurulu sürümü değiştirmez.
- Uygulama içi güncelleyici, yerel çalışma ağacı değişikliklerini değil, yayımlanmış sürüm paketlerini uygular.
- Yeni Composer tüketicileri, normal sürüm tabanlı güncelleme akışını kullanmadan önce ilk kurulumu
composer require fklavyenet/webblocks-cmsvephp artisan webblocks:installile yapmalıdır. - Güncel paket-yerel kurulumlar, paket köklü sürüm ZIP'lerini doğrudan tüketir.
- Paket-yerel System Updates, paket yapıtını kanonik Composer paket kökü olan
vendor/fklavyenet/webblocks-cmskonumuna uygular; böylece Composer güncellemesi ile System Update aynı kurulu paket düzenini üretir. - Tarihsel olarak,
1.31.53gibi paket-yerel öncesi kurulumlar paket köklü sürüm ZIP'lerini doğrudan tüketemiyordu ve önce eski biçimli1.32.33kök yönetimli köprüyü gerektiriyordu. Normal kapılarda desteklenecek eski kök yönetimli kurulum kalmadığı için bu köprü yolu artık rutin sürüm doğrulamasından emekliye ayrılmıştır.
Dokümantasyon ve Lisans Geçişi (1.89.1–1.89.4)
Temel kullanıcı belgeleri bağımsız webblocks-cms-docs deposunun docs/ dizinindedir; docs/guides/ ve belge medyası da buradadır. Genel /docs//guides sayfaları yayın hedefleridir. CMS paketi resources/contracts/inventory.md çalışma zamanı sözleşmesini taşır; GET /webadmin/api/inventory bunu sunmaya devam eder. CMS kurmak/güncellemek docs deposunu gerektirmez. Bu ayrım belge yayınlama veya senkronizasyon motoru getirmemiştir.
Lisans geçişi paket tabanlı bir ara sürüm kullanır:
- 1.89.1: Publisher ZIP'leri yalnızca eski
docs/LICENSElisans yolunu taşır; mevcut güncelleyiciler ara sürümü kurabilir. Composer/Git kökLICENSEkullanır. Ara güncelleyici iki yerleşimi kabul eder, ikisi varsa kökLICENSEtercih eder ve standart kök lisansını kurar. Belgeler yayın paketine dahil değildir. - 1.89.2 ve sonrası: Publisher ZIP'leri kök
LICENSEtaşır,docs/dizini üretmez. Bu biçim için en az CMS1.89.1gerekir. Eski Publisher kurulumları önce1.89.1kurup güncel sürümü yeniden kontrol etmelidir. Composer kurulumları doğrudan güncellenebilir. - 1.89.3: Gömülü Publisher Client
1.1.13olur, ara sürüm uyumluluk metadatasını doğrular ve başarılı kurulumdan sonra sonraki güncellemeyi kontrol eder. CMS adaptörüupdate_pathmetadatasını korur ve hatalı asgari ürün sürümlerini reddeder. - 1.89.4: Gömülü Publisher Client
1.1.14olur. Notlar yalnızca kurulu sürümden yeni ve seçilen hedef sürümü aşmayan sürümleri içerir; hedef ara sürüm olduğunda da aynı kural geçerlidir.
Örneğin eski paket kurulumu 1.89.4 öncesinde 1.89.1 görebilir. Ara sürümü inceleyip uygulayın; sonraki kontrolde güncel sürümü kurun. Ara sürüm ekranı yalnızca 1.89.1 dahil notları göstermelidir. Bu lisans ara sürümü, aşağıdaki eski kökten yönetilen 1.32.33 geçişinden ayrıdır.
Operasyonel Beklentiler
- Güncellemeleri yalnızca yayımlanmış sürümlerden çalıştırın.
- Kuruluma özgü dosyaları
.env,storage/veproject/gibi korunan yollarda tutun. - Geliştirme ve sürüm iş akışlarını ayrı ele alın.
- Uygulama içi Sistem Güncellemeleri her zaman Composer paket kökü
vendor/fklavyenet/webblocks-cmshedefler. Kaynak bakım kopyaları git/Composer ile güncellenir. Kaldırılmış kaynak uygulama modu veWEBBLOCKS_UPDATES_MIGRATION_STRATEGYayarı1.41.0itibarıyla yok sayılır. - Sürüm paketleri yalnızca yeniden kullanılabilir CMS çekirdek kodunu içerir ve kuruluma özgü
project/içeriğini barındırmamalıdır. - Güncelleme sırasında korunan yollar sürüm paketi sınırını değiştirmez:
project/kuruluma yerel kalır ve yayımlanan yapıtın dışındadır. - Kurulu CMS çalışma kopyaları güncelleme tüketicisidir, upstream yayıncısı değildir. Bir kurulumun git
origin'i varsa, gerekiyorsa fetch erişimini koruyun ancak push'ugit remote set-url --push origin DISABLEDile devre dışı bırakın. - Başarı yalnızca paket çalışma zamanı standart
WebBlocks\Cms\Support\WebBlockskaynağından hedef sürümü bildirdiğinde kaydedilir. Eski/beklenmeyen sürümde uygulama başarısız sayılır ve yedek otomatik geri yüklenir. Geri yükleme başarılıysarestored; başarısızsa iki hata iziylefailedkaydedilir.
Birlikte Kurulan Güncelleme İstemcileri
Ana uygulama, ad alanlı Publisher Client çalışma zamanı taşıyan birden fazla paket kurabilir. Laravel yapılandırması uygulama genelindedir; ortak publisher-client anahtarı kalıcı ürün durumu sayılmamalıdır. Başka sağlayıcı aynı açılış döngüsünde kendi ürününü, sürüm çözücüsünü, paket hedefini, doğrulama, migration ve uygulama sonrası değerlerini yazabilir.
Her CMS güncelleme giriş noktası, hizmeti çözmeden önce CMS istemci yapılandırmasının tamamını geri kurar. Denetleyiciler yalnızca CmsPublisherClientConfigurator enjekte etmeli, configure() çağırmalı, ardından konteynerden SystemUpdateInspector, UpdateServerClient, SystemUpdater veya AdminUpdateIndicator çözmelidir. Bu hizmetleri kurucuya/eylem metoduna enjekte etmek, yapılandırma geri kurulmadan bağımlılıkları çözebilir; yapılmamalıdır. Birlikte çalışma regresyon testi ortak yapılandırmayı ilgisiz ürün ad alanıyla değiştirerek CMS çözücüsü, sürümü, hedefi ve istemcisinin birlikte geri geldiğini kanıtlar.
Sürüm Ayrıntıları
Sistem Güncellemeleri ekranı iki durumlu tek karttır. Güncelse kurulu sürümü ve son kontrol zamanını gösterir. Uyumlu güncelleme varsa kurulu-hedef sürüm yolu, sürüm bazlı açılır What's new notları, yedek bilgili tek tıklamalı Update to X eylemi (öncesinde otomatik yedek, hatada otomatik geri yükleme) ve büyük güncellemeler için Yedekler ekranına yönlendiren tam sunucu yedeği önerisi görünür. Özet çalışan CMS kodunu son yayınla karşılaştırır; kayıtlı kurulu sürüm yalnızca kurulum geçmişi/güncelleme kalıcılığı içindir.
Süper yöneticiler üst gezinmede asenkron güncelleme göstergesi görür. Varsayılan gizlidir; arka planda /webadmin/system/updates/indicator okur ve yalnızca yeni, güvenilir sürümde görünür. Normal yönetim render'ı güncelleme sunucusunu beklemez; güncel kurulumda kalıcı kısayol görünmez.
Ön kontrol listesi veritabanı bağlantısı, ZIP/sodium eklentileri, PHP/Composer/süreç yürütme, uygulama kökü/çalışma alanı yazma izni ve boş disk alanını denetler. Her kontrol geçti/kaldı sonucudur; tümü geçmeden ve kilit boşalmadan güncelleme açılmaz. Geçmiş kapalı akordeonda, her kaydın günlüğü modalda gösterilir; silme eylemleri arayüzde yoktur.
Kontrol ve uygulama sonrası kayıtlar otomatik budanır. Varsayılan son beş kaydı tutar; son başarısız kayıt daha yeni başarı oluşana kadar korunur. Arayüz kayıtları silme kontrolü olmadan listeler. Terminalde php artisan webblocks:updates:runs, php artisan webblocks:updates:runs --last, php artisan webblocks:updates:runs --failed ile inceleyin; kontrollü budama php artisan webblocks:updates:prune-runs --keep=5 ile yapılır.
Release ayrıntıları title, summary, highlights, fixes, compatibility_notes, migration_notes, asset_notes, operator_notes, technical_notes alanlarının yapılandırılmış metadatasını kaçışlanmış düz metin olarak gösterir. Normalleştirilmiş dizi ayrıca changelog_entries taşır: kurulu sürümden yeni, seçilen hedefi aşmayan sürümlerin en yeniden sıralı birikimli listesi; sunucunun changelog, releases, changelog_entries listelerinden oluşturulur. Liste yoksa yalnızca hedef sürüm kullanılır; What's new akordeonu boş kalmaz.
Eski release_notes dizesi, daha eski sürüm yükleri için desteklenmeye devam eder. Sürüm notu yoksa ekranda No release notes were provided for this release. yazar. Güncelleyici, değişiklikleri sürüm numaralarından çıkarsamaz.
Yayın metadatası yerelde composer release:prepare ile hazırlanır, composer release:publish-update ile yayınlanır. Sarmalayıcı geri alınamaz Publisher yazımı öncesi GitHub CLI kimliğini doğrular, Publisher'a yayınlar, ardından eşleşen GitHub Release'i oluşturup/güncelleyip latest işaretler. Hazırlama, sürüme uygun CHANGELOG.md bölümü gerektirir; maddelerini eski release_notes ve yapılandırılmış summary/highlights için kullanır, kaynak referansı, özet ve asgari istemci sürümü ekler. Yayıncı üst ve iç içe alanları gönderir; yeni ekranlar zengin, eski istemciler düz not alır. İstemciler üst alanlar, details, release_details, sunucu meta.release_details/meta.details yüklerini okur.
GitHub Actions yayın paketi oluşturmaz veya metadata yayınlamaz; .github yalnızca test ve lint çalıştırır. Yerel sarmalayıcı GitHub latest kaydını etiketli kararlı sürümle eşleştirir. Sistem Güncellemeleri yalnızca Publisher metadata/paketlerini tüketir. publisher.webblocksui.com temel hizmettir: yayın https://publisher.webblocksui.com/api/updates/publish, kurulu sitenin okuması https://publisher.webblocksui.com/api/updates/latest, paket indirmeleri https://publisher.webblocksui.com/downloads/.... Normal .env dosyalarında sunucu/ürün/kanal anahtarları gerekmez; varsayılan sunucu, ürün, stable kanal ve yollar ReleaseDefaults tarafından sahiplenilir. Eski updates.webblocksui.com geçişi yalnızca tarihseldir; etkin ayar olarak kullanılmaz.
Bakımcı komutları:
composer release:push
composer release:prepare
composer release:publish-update -- --dry-run
composer release:publish-update
release:push mevcut yayın dalını ve açıklamalı sürüm etiketini origin üzerine birlikte gönderir; pre-push kontrollerini bir kez çalıştırır. Başarıdan sonra aynı referansları --no-verify ile backup üzerine yansıtır; iki uzaktaki dal ve çözülmüş etiket commit'ini yerel yayın commit'iyle karşılaştırır.
Yayıncı WEBBLOCKS_PUBLISHER_TOKEN, imzalı yayınlarda WEBBLOCKS_PUBLISHER_SIGNING_KEY kullanır. Güncelleme varsayılanları https://publisher.webblocksui.com, ürün webblocks-cms, kanal stable, okuma /api/updates/latest; yayın aynı kimlik ve /api/updates/publish yoludur. Composer sarmalayıcısı yalnızca bu iki sırrı proje .env dosyasından izole Testbench sürecine aktarır; önbellekli yapılandırma da proje .env üzerinden yeniler. Elle export gerekmez. Dry-run anahtarı ve paket girdilerini yüklemeden doğrular. Tokensız gerçek yayın kontrollü yayınlanmamış sonuç ve başarısız çıkış verir; yayın sayılmaz.
Anonim Kullanım Telemetrisi
Kontroller gizliliği koruyan kullanım telemetrisi içerir; Publisher indirmeleri aktif anonim kurulumlardan ayırabilir. İndirme sayısı paket edinimini ölçer. Aktif anonim kurulumlar zaman içinde geri bildiren benzersiz kurulum kimliklerini sayar.
Telemetri varsayılan açıktır; kapatmak için:
WEBBLOCKS_TELEMETRY=false
Telemetri açıkken ilk ihtiyaç duyulan kontrolde rastgele yerel installation_id oluşturulup kurulum sistem ayarlarına kaydedilir. Kişisel/site verisi içermez, mevcut kurulumda sabittir; kurulum yeniden oluşturulur veya depolama/veritabanı ayarları sıfırlanırsa değişebilir.
Kontrol yalnızca şu telemetri alanlarını gönderir:
product_keyinstalled_versionchannelinstallation_idtelemetry_schema_version
CMS kontrolü alan adı, tam URL, yönetici e-postası, sunucu yolu, veritabanı adı, lisans sahibi, kullanıcı sayısı, token, sır veya rastgele ortam/yapılandırma değeri göndermez. WEBBLOCKS_TELEMETRY=false olduğunda ürün, kanal ve kurulu sürümle metadata yine istenir; installation_id oluşturulmaz veya gönderilmez.
Güncelleme Uygulama Akışı
Uygulama içi Sistem Güncellemesi tek tıklamalı bir çalıştırmadır: paketi indirip doğrular, otomatik ön yedek alır, dosyaları uygular, ardından sırasıyla:
- varsa paket güncelleme migration'ları
- önbellek temizleme adımları
- paketle gelen katalog senkronizasyonu (
webblocks:catalog-repair --all) - güncelleme çalıştırması kaydı
- kurulu sürümün kalıcı hâle getirilmesi
Uygulama veya doğrulama başarısızsa ön yedek otomatik geri yüklenir. Başarısız olup geri yüklenen çalıştırma restored; geri yükleme de başarısızsa günlükte iki hata iziyle failed kaydedilir. Ön yedek Yedekler ekranında veya CLI php artisan system:backup:restore ile elle geri yüklemek için kalır.
Başarılı güncelleme sonrası yapılandırılmış otomatik yedek temizliği uygulanır; silinen adet ve boşalan bayt günlükte kaydedilir. Temizlik hatası başarılı güncellemeyi geri almaz; çıktı ve uygulama günlüğüne yazılır. Varsayılan ön yedekleri 14 gün ve en az son beş başarılı ön yedeği, geri yükleme güvenlik yedeklerini 30 gün, içerik uygulama noktalarını 7 gün tutar. Başarısız/geri yüklenmiş güncelleme yedekleri 90 gün korunur. Elle alınmış, yüklenmiş ve çalışan yedekler uygun değildir. Maintenance → Cleanup altında yapılandırın/önizleyin; zamanlayıcı, CLI ve API için İşletim belgesine bakın.
Normal güncellemeler yayın paketini uygular, önbellek temizliğinden sonra yeni kod üzerinde alt süreç olarak webblocks:catalog-repair --all çalıştırır. Blok, eklenti blok, slot, sayfa düzeni ve simge kataloglarını paketle eşleştirir; Rating/Comments gibi yeni satırlar elle komut gerektirmeden eklenir. Temizlik sonrası yeniden kurulan hizmet manifesti yeni komutları keşfeder. İşlem tekrarlanabilir; kurulumun özel katalog satırlarını korur.
Katalog senkronizasyonu mümkün olan en iyi çabayla yapılır: dosya ve migration'lar başarılı olduğundan senkronizasyon hatası güncellemeyi başarısız yapmaz. Günlük, tamamlanmadığını ve php artisan webblocks:catalog-repair --all komutunun elle yeniden çalıştırılabileceğini belirtir. Şema değişiklikleri açık güncelleme migration'larındadır; senkronizasyon yalnızca katalog verisini onarır.
Önbellek temizleme adımları; dosya değişiminden sonra güncellenen paket sahipliğindeki Blade yerleşimlerinin ve yardımcıların yeniden derlenmesi için Laravel config, view, uygulama önbelleği ve route temizlemelerini içerir. OPcache'in zaman damgalarını doğrulamayacak şekilde yapılandırıldığı canlı PHP-FPM kurulumlarında, PHP'nin güncelleme öncesi paket sınıflarını bellekten sunmaya devam edememesi için başarılı bir güncellemeden sonra ilgili PHP-FPM servisini yeniden yükleyin.
Güncellemede kapatılamayan modal kurulu-hedef yolunu ortak WebBlocks UI yükleme bileşeniyle gösterir. Kod PHP işçilerini istek ortasında yeniden başlatabileceğinden ilk isteğin bitmesine bağlı değildir: güncellemeyi tetikler, gösterge rotasını uygulama yanıtlayana kadar 1,5 saniyede bir sorgular; 3 dakikada her durumda yönetime döner. Her yanıt, giriş yönlendirmesi dahil, ekranı yeniden yükler.
Sistem Güncellemesi ana Laravel uygulamasının kök database/migrations dizinini çalıştırmaz; 0001_01_01_000000_create_users_table.php gibi bekleyen başlangıç migration'larının paketçe oluşturulmuş tablolarla çakışmasını önler. Paket vendor/fklavyenet/webblocks-cms üzerine uygulanır; yalnızca vendor/fklavyenet/webblocks-cms/database/migrations/updates içinde PHP dosyası varsa paket güncelleme migration'ları çalışır. Yoksa atlama kaydedilir, önbellek temizliği ve sürüm kaydı sürer. Eksik üst anahtarlar gibi tam yedek/geri yükleme taşınabilirliği onarımları da bu migration'ların yeridir.
Paket-Yerel Şema Güncelleme Kuralı
Çalışma zamanı kodunun gerektirdiği her WebBlocks CMS şema değişikliği her iki kurulum yolunu da desteklemelidir:
- Yeni/paket tüketici kurulumları: normal veya yeni kurulum şema migration yolunu güncelleyin.
- System Updates üzerinden güncellenen mevcut paket-yerel kurulumlar: paket
database/migrations/updatesaltına bir paket güncelleme migration'ı ekleyin; kurulu tüketiciler bunuvendor/fklavyenet/webblocks-cms/database/migrations/updateskonumundan çalıştırır.
Yalnızca yeni kurulum şeması yeterli değildir. Yeni çalışma zamanı kodu bir tablo veya sütun bekliyorsa, sürüm mevcut kurulumlar için bir güncelleme migration'ı içermeli ya da güncelleme, yeni kod yolu ham 500 hatası verebilmeden önce güvenli biçimde başarısız olmalıdır. Paket-yerel System Updates, başarılı bir güncellemeden sonra sıradan kullanıcıların bir siteye SSH ile bağlanıp elle migration çalıştırmasını gerektirmemelidir.
Başarılı paket güncellemesinde kod, gerekli şema, önbellek temizliği ve uygulama sonrası sürüm/şema hazırlığı uyumludur. Yeni şemaya bağlı yönetim, API ve çalışma zamanı sayfaları eksik şemada ham framework/veritabanı hatası yerine kontrollü kurulum/güncelleme yönlendirmesi vermelidir. Örnek hata 1.32.146→1.32.147 token olayıdır: cms_api_tokens yalnızca normal migration'daydı, paket güncellendiğinde System -> API Tokens sunucu hatası verdi; 1.32.147 paket migration'ı ve kontrollü eksik şema davranışı ekledi.
Etkileşim şeması aynı sözleşmeyi izler. Paket güncellemeleri wbcms_comment_entries/wbcms_content_ratings tablolarını otomatik sağlamalı; yöneticiler ana uygulamada artisan migrate çalıştırmak zorunda kalmamalıdır. Onarım tekrarlanabilir: eski öneksiz tabloları koruyup yeniden adlandırır, yoksa önekli tabloları oluşturur; geri almada etkileşim verisini bilerek korur.
Şema değişikliği içeren sürüm raporları şunları açıkça yanıtlamalıdır:
- yeni kurulum şema yolu güncellendi: evet/hayır
- paket güncelleme migration'ı eklendi: evet/hayır
- güncelleme migration'ı regresyon testi eklendi: evet/hayır
- eksik şema için zarif davranış gerekli/eklendi: evet/hayır
Paket geçişi sırasında bazı kurulumlarda hâlâ bayat bir kurulum kökü packages/webblocks-cms kopyası veya eski bir iç içe vendor geçiş kopyası bulunabilir. Bu yollar eski geçiş yapıtlarıdır, etkin paket-yerel doğruluk kaynağı değildir. Paket-yerel System Update artık vendor/fklavyenet/webblocks-cms konumundaki kanonik Composer paket kökünü değiştirir ve hedef sürümü bu paket kökünden doğrular. packages/webblocks-cms dizinini ikinci bir güncellenmiş çalışma zamanı kopyası olarak tutmaz.
Eski vendor vendor/fklavyenet/webblocks-cms depo biçiminde olup artisan, app/, bootstrap/, packages/webblocks-cms/, plugins/, tests/ içerebilir. Sistem Güncellemesi bunu düz paketle değiştirir: composer.json, kök LICENSE, src/, routes/, resources/, database/, public/, config/, stubs/ doğrudan vendor/fklavyenet/webblocks-cms altında olur. Optimize autoload öncesi Composer paket metadatası normalleştirilir; WebBlocks\Cms\ çözümünün eski iç içe vendor/fklavyenet/webblocks-cms/packages/webblocks-cms/src yerine vendor/fklavyenet/webblocks-cms/src kullandığı doğrulanır. Eski yollar kalırsa bozuk yönetimle başarı bildirmek yerine güncelleme başarısız olur.
Modern güncellemeler, v1.32.56 geçişiyle getirilen /webadmin yönetici ve /cms varlık ayrımını korur. /cms yalnızca statik bir varlık ad alanıdır, bir yönetici öneki değildir; çünkü Nginx try_files, Laravel bir rota görmeden önce /cms/ yolunu fiziksel public/cms/ dizini olarak çözebilir. Güncellemeler; ne kurulum kökünde ne de paket public varlıklarında CMS sahipliğindeki /cms yönetici takma adlarını, /cms yönlendirmelerini, /admin rotalarını veya bir public/cms/index.php devrini geri getirmemelidir.
1.31 Kök Yönetimli Güncellemelerden Emekliye Ayrılan Köprü
Bu bölüm tarihseldir. 1.31.53 güncelleyicisi eski kök yönetimli arşiv sözleşmesini doğruluyordu: artisan ve composer.json arşiv kökünde ya da tek bir sarmalayıcı dizin içinde bulunmak zorundaydı. 1.32.31 gibi paket köklü yapıtlar kasıtlı olarak kök artisan içermediğinden, bu eski istemciler uygulamadan önce Package validation failed because composer.json and artisan were not found at the archive root. hatasıyla başarısız oluyordu.
Emekliye ayrılan köprü stratejisi iki adımlıydı:
- Eski kök yönetimli biçimde bir köprü sürüm yapıtı yayımlayın veya yeniden yayımlayın; bu yapıt, eski
App\Support\System\Updates\*sarmalayıcılarına hâlâ sahip olan ve katı paket köklüfklavyenet/webblocks-cmsarşivlerini zaten doğrulayan köprü yetenekli bir kaynaktan derlenmelidir.1.32.33köprüsü için kaynak refv1.32.30idi. - Paket köklü sürümleri
minimum_client_versiondeğeri1.32.18veya daha yenisi olacak şekilde yayımlayın; böylece eski istemcilere köprüden önce en son paket köklü yapıt sunulmuyordu. - Köprü uygulandıktan sonra kurulu güncelleyici, modern sürümlerin kullandığı katı paket köklü
fklavyenet/webblocks-cmsyapıt biçimini doğrulayıp uygulayabiliyordu.
scripts/build-root-managed-bridge-archive.sh VERSION [OUTPUT_DIR] [GIT_REF] yalnızca eski biçimli köprü ZIP'i için arşivlenmiş/elle kurtarma aracı olarak tutulur; örneğin, scripts/build-root-managed-bridge-archive.sh 1.32.33 dist v1.32.30. Derleyici; .env, storage/, project/, public/site/, public/storage ve kök config/ gibi kurulum sahipliğindeki yolları kasıtlı olarak hariç tutar; packages/webblocks-cms/config altındaki paket sahipliğindeki varsayılanlar paket çalışma zamanının parçası olmaya devam eder. Rutin paket-yerel doğrulama bu köprü yolunu çalıştırmaz.
Tamamlanan tarihsel yol 1.31.53 -> 1.32.33 bridge -> 1.32.34+ package-rooted idi. 1.32.30 gibi zaten köprü yetenekli kurulumlar köprüyü atlayıp doğrudan paket köklü bir 1.32.34+ sürümüne güncellendi. Güncel sürüm kapıları yalnızca paket köklü yapıtı ve paket-yerel güncelleyici davranışını korur.
Katalog Onarımı
Sistem Güncellemeleri kurulum sonrası webblocks:catalog-repair --all otomatik çalıştırır; bkz. Güncelleme Uygulama Akışı. Aynı komutlar yayın arası katalog onarımı veya tamamlanmayan senkronizasyon için elle de kullanılabilir:
php artisan webblocks:catalog-repair --dry-run --all
php artisan webblocks:catalog-repair --all
Komut --block-types, --plugin-block-types, --slot-types, --page-layouts, --icons kapsamlarını destekler. Önce --dry-run ile oluşturulacak, güncellenecek, değişmeyecek veya atlanacak satırları raporlayın. Tekrarlanabilir; özel satırları korur, silmez.
Daha düşük seviyeli blok türü eşitlemesi uyumluluk için kullanılabilir durumda kalır:
php artisan block-types:sync-core
Blok türü onarım yolu, veritabanı destekli block_types kataloğunu mevcut kurulumlarda birlikte gelen çekirdek CMS kataloğuyla hizalı tutar:
- eksik çekirdek blok türleri oluşturulur
- mevcut çekirdek blok türleri yerinde güncellenir
- kuruluma özgü özel blok türleri korunur
- yinelenen çekirdek satırlar oluşturulmaz
Bu bakım iş akışı, her sürüm paketi uygulamasının geniş kapsamlı veritabanı destekli katalog onarımı yapmasına gerek kalmadan bir kurulumun katalog satırlarını yenileme ihtiyacını karşılar.
Güncelleyici, hâlâ kanonik CMS upstream'ine işaret eden git destekli bir kurulum klonu içinde çalıştığında, CMS artık kurulum sonrası komutlardan sonra origin push'u da otomatik olarak devre dışı bırakır; böylece gelecekteki yanlışlıkla yapılan git push denemeleri açıkça başarısız olurken normal fetch veya pull erişimi kullanılabilir kalır.
API Aracılığıyla Sistem Güncellemeleri (1.90.0)
Internal Content API, kurulum çapında güncelleme kontrollerini, yürütmeyi, ve dayanıklı çalışma sonuçları. Bu uç noktalar aynı Publisher Client'ı kullanıyor motorunu Sistem Güncellemeleri paneli olarak kullanın. Yapılandırılmış otomatiklerini korurlar yedekleme, sağlama toplamı ve imza doğrulama, özel çalıştırma kilidi, bakım modu, uygulama sonrası sürüm doğrulaması ve hata kurtarma. İmza doğrulama kurulumun mevcut imzalama politikasını takip eder; API bunu yapar isteğe bağlı imzalama politikasını zorunlu hale getirmeyin veya zayıflatmayın.
| Yöntem ve yol | Gerekli yetenek | Amaç |
|---|---|---|
| GET /webadmin/api/system/updates/check | system-updates.read | Yüklü sürümü, sunulan hedefi, sağlama toplamını, uyumluluğu ve kilit durumunu okuyun. |
| POST /webadmin/api/system/updates | system-updates.run | Açıkça onaylanmış bir güncellemeyi eşzamanlı olarak yürütün. |
| GET /webadmin/api/system/updates/operations/{operation} | system-updates.read | UUID'nin dayanıklı çalışmasını ve bunun sterilize edilmiş sonucunu okuyun. |
Her iki yetenek de açıkça verilmelidir; varsayılan ve eski varsayılan belirteç izinlerine dahil değildir. system-updates.run yıkıcı işlem olarak sınıflandırılır. Güncellemeleri çalıştırıp ardından incelemesi gereken bir araca iki yeteneği de verin; yalnızca izleme yapılacaksa system-updates.read yeterlidir. Okuma izni, çalıştırma izni vermez.
Bu uç noktaları yalnızca kurulum genelinde yetkili bir sistem belirteci kullanabilir. allowed_site_ids değeri null olmalı; belirtecin sahibi etkin bir kullanıcı olmalı ve hâlen access-system yetkisine sahip olmalıdır. Saklanan yetenek dizilerine güncelleme izinleri eklense bile kişisel belirteçler ve site kapsamlı sistem belirteçleri bu işlemlere erişemez. Sistem erişimi olmayan herkese açık demo kullanıcıları güncelleme izni veremez veya kullanamaz. Belirtecin iptal edilmesi, süresinin dolması, sahibinin devre dışı bırakılması veya silinmesi ya da sistem yetkisini kaybetmesi sonraki erişimi engeller. API, her istekte yetenekleri ve kurulum yetkisini denetler; belirteç oluşturulurken de kurulum yetkisi denetlenir.
Onay ve Yürütme
- Kontrol bitiş noktasını okuyun. Ulaşılamayan bir güncelleme sunucusu veya uyumsuz sonuç bir güncelleme çalıştırma izni yok.
- Operatöre kurulu sürümü, sunulan hedef sürümü ve sağlama toplamını gösterin. Tam olarak bu güncelleme ve kurulum çapındaki güncelleme için açık onay alın etki. Belirteç bağışı, belirli bir çalıştırmanın onaylanmasının yerine geçmez.
- Kararlı bir
idempotency_keyoluşturun ve onaylanan alanları gönderin. Bunu sakla bağlantı kaybı kurtarma için anahtar ve istek gövdesi.
Sentetik versiyonlar ve sağlama toplamı kullanan örnek istek gövdesi:
{
"idempotency_key": "operator-approval-2026-10-02-1",
"expected_current_version": "1.90.0",
"target_version": "1.91.0",
"checksum_sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"confirmed": true
}
confirmed, arayanın operatör onayı aldığını doğrular; öyle değil
isteğin bir insanın onayladığını kanıtlayın. Onay disiplini devam ediyor
çağıran aracın sorumluluğundadır. Yapay zekada otomatik olarak ayarlamayın
yalnızca içeriği düzenleme yetkisine sahip iş akışı.
Motor, kurulu sürümü ve yeni sunulan sürümü kontrol eder.
onaylı sürüm/sağlama toplamı çalıştırma kilidinin içinde, bir yedekleme oluşturmadan önce veya
dosyalar uygulanıyor. Değiştirilmiş bir hedef, sağlama toplamı veya kurulu sürüm geri döner
system_update_target_changed; tekrar kontrol edin ve yeni onay alın. keyfi
indirme URL'leri, yapılar, komutlar ve imzalama/yedekleme geçersiz kılmaları
kabul edildi. Köprü sürümü onaylanmış bir güncellemedir: yetki vermez
sonraki bir sürümün kurulumu.
Yürütme, Yeniden Denemeler ve Sonuçlar
Yürütme panelde olduğu gibi senkronizedir. Sıra zorunluluğu yoktur ve hayır
202 Accepted arka plan işi vaadi. İlk POST normalde 200 değerini döndürür
bir operation nesnesiyle; başarısız yürütme, işlemle birlikte 409 değerini döndürür.
İşlem UUID'yi, ilgili çalıştırma kimliğini, sürümleri, sağlama toplamını, durumu,
hata kodu, zaman damgaları ve arındırılmış sonuç. Yedekleme konumları, taşıyıcı jetonlar,
sunucu kimlik bilgileri ve ham yığın izleri döndürülmez. Yanıtları kontrol et atla
URL'leri ve ham sunucu teşhislerini indirin.
Durumlar şunlardır: running, success, success_with_warnings, failed ve
restored. restored, motorun başarısız bir güncelleme bildirdiği ve ardından bir güncelleme bildirdiği anlamına gelir.
başarılı yedekleme restorasyonu; bu bir güncelleme başarısı değil. Sonuç çıktısı:
sunulduğunda tekrar sınırlandı ve sterilize edildi. Doğrulanmış başvuru sonrası sonuçlandırma
arızalar panelle aynı mutabakat hizmetini kullanır; bu nedenle panelin açılması
success_with_warnings'yi edinmek gerekli değildir.
Aynı belirteci ve önemsizlik anahtarını kullanan özdeş bir POST, orijinali döndürür
replayed: true ile çalışır ve asla başka bir güncelleme yürütmez. Yeniden kullanma
farklı onaylanmış alanlara sahip anahtar system_update_idempotency_conflict değerini döndürür.
Idempotency anahtarları bir belirtecin kapsamına alınmıştır: belirteçleri değiştirmek veya yeni bir anahtar kullanmak
belirsiz bir sonuçtan sonra güvenli bir yeniden deneme değil. operation.status'yi inceleyin ve
operation.code; bir tekrarın başarılı HTTP yanıtı, mevcut
işlem geri alındı ancak güncellemesi başarılı olmadı.
Rakip bir güncelleme system_update_in_progress değerini döndürüyor. API kabulü ve
mevcut motor kilidi, panel/API yarışları da dahil olmak üzere, çakışan yürütmeyi önler.
Dayanıklı faturalar, olağan çalışma geçmişi budamasından bağımsız olarak tutulur;
Bir jetonun iptal edilmesi veya silinmesi, bu makbuzların kademeli olarak silinmesine neden olmaz.
Bağlantı Kaybı ve Operatör Kurtarma
An güncelleme kendi çalışan kodunu değiştirebilir ve geçici olarak bakımı etkinleştirebilir
modu. POST bağlantısı zaman aşımına uğrayabilir ve yoklama geçici 503 alabilir
yanıtlar. İkisi de başarısızlığı kanıtlamaz. Erişim geri geldiğinde POST işlemini tam olarak tekrarlayın
UUID işlemini kurtarmak için orijinal anahtarı/gövdesi ile veya eğer UUID'yi sorgulamak için
zaten biliniyor. Hiçbir zaman otomatik olarak yeni bir anahtar göndermeyin.
A önemli işlem kesintisi, running olarak kaydedilen bir işlemin bırakılmasına neden olabilir.
İşlem yeterince eski olduğunda ve motorda canlı kilit/kalp atışı olmadığında,
sonucu requires_attention: true'yi rapor ediyor. Bu belirsiz bir sonuçtur
uydurma bir başarısızlık, başarı ya da geri dönüş değil. Çözümlenmemiş API işlemleri bloğu
system_update_requires_attention ile yeni API uygulamaları; aynı operasyon
yine de tekrar çalıştırılmadan geri alınabilir.
Kurulum operatörü etkin sürümü, yedeklemeyi, bakımı incelemelidir durum ve çalıştırma geçmişini kontrol edin ve mevcut kurtarma prosedürünü tamamlayın. Çöz yalnızca kontrollü ana bilgisayar tarafı veritabanı bakımı yoluyla sahipsiz bir makbuz gerçek sonucu belirledikten sonra; anahtarını ve denetim kaydını koruyun. Yap Korumayı atlamak için makbuzları silmeyin. API kasıtlı olarak hayır sağlar belirsiz işlemler için otomatik yeniden başlatma, iptal etme veya geri yükleme uç noktası.
Geçersiz istek alanları veya eksik onay dönüşü 422; eksik yetenek
veya kurulum yetkilisi 403 değerini döndürüyor ve bilinmeyen bir işlem geri dönüyor
404. Kimlik doğrulama hataları normal API 401 davranışını korur. Keşfet
/webadmin/api aracılığıyla canlı yollar ve talep sözleşmesi ve
/webadmin/api/openapi.json.
Sistem Token Uygunluğu (1.90.1)
Sistem belirteci oluşturma ve düzenleme, sabit sistem belirteci türünü ve kurulum çapındaki kapsamı gösterir. Panel, sistem güncellemelerini çalıştıramayan bir belirteci kaydetmeden önce uyarır. Uygun bir belirtecin hâlâ aktif bir sistem yöneticisi sahibine, kurulum çapında kapsama ve ayrıca system-updates.read veya system-updates.run verilmiş olmasına ihtiyacı vardır; kişisel ve site kapsamlı belirteçler yükleme güncellemelerini gerçekleştiremez. Bir belirteci düzenlemek, sahip, süre sonu, iptal veya kapsam kontrollerini kaldırmadan eski sistem belirteci türlerini normalleştirir.