Aktualizácia Drupalu 8 na Drupal 9: Skúsenosti zo skutočného sveta

Viktor
Viktor Šulák
Jun 18, 2020
3 min read
drupal 9

Teória jednoduchej aktualizácie z Drupalu 8 na Drupal 9 bez komplikácií znie skvele. Poďme zistiť, ako jednoduché je to v skutočnosti.

O predpokladoch a zmenách sme diskutovali v našom predchádzajúcom článku:
Drupal 9 sa blíži!

........

Aby sme veci čo najviac zjednodušili, použili smeComposeraDrush. Ide o moderný spôsob vývoja Drupalu cez terminál.

Ako prvé sme si vytvorili zálohu databázy. Pre istotu.

Na začiatok sme museli aktualizovať jadro a moduly na najnovšiu verziu v rade 8.x. V našom prípade to bolo jadro Drupal 8.9.0. Zmenili sme súbor Composer.json a spustili aktualizačné skripty.


"require": {
    "drupal/core": "^8.9.0",
},
"require-dev": {
    "drupal/core-dev": "^8.9.0"
}

Toto sú riadky, ktoré boli upravené vcomposer.json.


composer update drupal/core drupal/core-dev --with-dependencies
composer update
drush updatedb
drush cache:rebuild

Následne sme nainštalovali a povolili modul na kontrolu možnosti aktualizácie -Upgrade Status. Ide o veľmi užitočný nástroj na kontrolu pripravenosti na aktualizáciu na novú, "veľkú" verziu. Nakoniec dokonca tento modul zachránil náš web a ušetril veľa problémov.


composer require --dev 'drupal/upgrade_status:^2.0'
drush en upgrade_status
drush cache:rebuild

Potom sme zisťovali, ako sme pripravení na ďalšiu významnú verziu Drupalu. Neboli sme pripravení. Verzia PHP bola jediná zelená vec v zozname (viď obrázok dole). Keďže ide o staršiu webovú stránku, museli sme aktualizovať verziu MySQL (v našom prípade MariaDB) a aktualizovať aj verziu Drush.

drupal system readiness for upgrade
Drupal system readiness for upgrade


A tak sme to aj urobili. Docker nám pomohol s databázou a Composer s verziou Drush.


composer require 'drush/drush:^10.0'

S modulom Upgrade Status sme boli pripravení skontrolovať všetky moduly a témy, vlastné ikomunitné. Vybrali sme teda všetky a stlačili „Scan selected“. Po 60 sekundách sme sa dostali do časového limitu skriptu aneúspešne skončili. A znova a znova. Museli sme teda zmeniť prístup.


drush upgrade_status:analyze --all

Status Upgrade terminal output
Status Upgrade terminal output


Tentoraz sme mali šťastie. Prešiel celý skript a mali sme svoje výsledky. V dlhooom výstupe v konzole. Našťastie sa však všetky údaje mohli zobraziť aj v admin zóne Drupal.

Status upgrade warning for custom theme
Status Upgrade warning for custom theme


Vlastné moduly a témy vyžadovali iba kozmetické opravy. Stačilo iba pridať core_version_requirement do info súboru, ktorý tak hovorí jadru Drupalu, že téma alebo modul sa dá použiť s Drupal jadrom 8 a 9. Ale komunitnémoduly nám spôsobili väčšie problémy. Mnoho z nich používa zastarané metódy aj v najnovších verziách, pri iných sa po analýze ukázali rôzne varovania a chyby. V tom okamihu sme vedeli, že Drupal 9 pre nás ešte nie je schodná cesta. Nie je to až také prekvapujúce, nakoľko sme to testovali iba niekoľko dní po oficiálnom vydaní Drupalu 9.0.0, no i tak to bolo sklamaním.

status upgrade in drupal admin UI
Status Upgrade in Drupal admin UI
deailed drupal 9 incompatibility output
Detailed Drupal 9 incompatibility output


Niektoré moduly mali pripravené nové alfa alebo beta verzie, avšak pre väčšinu modulov to nie je to, čo chcete použiť. Pre niektorých je to, žiaľ, jediné vydanie. Niektoré z nich však dokonca nemali ešte pripravené ani beta verzie pre Drupal 9.

Výsledkom aktualizácie z Drupal 8.8 na 9.0 bola nakoniec aktualizácia na 8.9. Prebehlo to bez problémov a aj to je už nejaký výsledok, nakoľko pri väčších systémoch nie je aktualizácia verzie Drupal na jadro .0 zvyčajne vždy bezproblémová.

Tak či onak musíme počkať, kým budú moduly pripravené na Drupal 9 a jedného dňa ich možno budeme musieť niektoré z nich aj vymeniť.