Оновлюємо Magento2 через Composer
Офіційні інструкції знаходяться у адобівській документації - тут.
Основна ідея - зробити бекап composer.json, виконати консольну команду для оновлення конфігурації Композера на використання конкретної версії Мадженти та необхідних їй бібліотек та після цього — виконати оновлення відповідних пакетів через Композер.
#Не забуваємо про зворотню сумісність
Далі ви маєте перевірити весь свій кастомний код на предмет залежностей від оновлених модулей — між версіями Мадженти можуть бути зворотньо-несумісні зміни у коді, тому будь який кастомний код може перестати працювати суто із-за цього. Трохи нижче я надам посилання на сторінки, де такі зміни перелічені.
#Перші кроки — оновлюємо пакети через Композер
Так от, якщо вам потрібно, скажімо, з версії 2.4.4 оновитись на 2.4.6-p1, то команди виглядатимуть наступним чином:
composer require-commerce magento/product-community-edition 2.4.6-p1 --no-update
composer update
І після цього вже можна подивитись, що змінилось між версіями у composer.json
, composer.lock
, і чи ваша інсталяція Мадженти все ще працює після оновлення. Можна почати з виконання bin/magento
— якщо воно виконалось без помилок, то це вже непогано.
#Де читати про несумісні зміни між версіями
Дуже раджу уважно почитати: зміни без зворотної сумісності та примітки до релізу ("Release Notes") для конкретної версії та редакції, на яку ви оновлюєте.
Тут починається найбільш складна частина роботи, від якості якої залежить, чи буде необхідно щось ремонтувати на продакшені одразу після оновлення. Бо, якщо просто оновити версію Мадженти через Композер і не перевірити кастомний код (включно з модулями, які ви купили у інших розробників — дуже часто вони написані до того, як вийшло оновлення Мадженти, і можуть залежати від коду, який змінився після апдейту), є зовсім не нульова ймовірність, що щось перестане працювати, і ви про це дізнаєтесь вже по факту — або коли клієнти почнуть писати вам у форму зворотнього звʼязку, або коли впадуть продажі.
У першу чергу слід подивитись у списку змін без зворотної сумісності, які класи чи методи були видалені чи замінені, і пошукати у своєму коді, чи не використовуються вони десь. Далі слід перевірити, чи не змінився тип значення, що повертається у оновлених методів — якщо ви їх використовуєте, то доведеться переконатись, що типи збігаються.