Когда выходит новая MAJOR-версия Друпала, пользовательский код часто требует обновления, чтобы соответствовать изменениям в API. Так как я постоянно забываю некоторые аспекты этого процесса, то я решил задокументировать его на будущее.
Инструмент | Интерфейс | Возможности | Пользователи |
---|---|---|---|
Upgrade Status | Интерфейс в Друпале | Определение устаревшего кода, совместимости с окружением хостинга и другое | Управляющие сайтом и разработчики |
Drupal Check | Командная строка | Определение устаревшего кода | Разработчики, особенно в процессе кодирования и непрерывной интеграции (CI) |
Модуль Upgrade Status оценивает готовность сайта к переходу на новую MAJOR-версию, проверяя устаревший код и другие проблемы совместимости.
Установите его так же, как и любой другой модуль:
$ ddev composer require –dev drupal/upgrade_status
ddev это инструмент, который я предпочитаю для управления своей локальной средой разработки. composer это менеджер зависимостей для PHP, который обычно используется для установки модулей. Параметр –dev говорит о том, что модуль устанавливается в среду разработки.
После установки, включаем:
$ ddev drush pm-enable upgrade_status
drush расшифровывается как Drupal shell и является утилитой командной строки для управления сайтами на Друпале. Команда pm:enable используется для включения модуля в Друпале (pm расшифровывается как package manager).
После включения модуля, можно посмотреть его отчёты о совместимости проектов на странице Admin → Reports → Upgrade status (/admin/reports/upgrade-status).
Модуль Upgrade Status может рекомендвать обновление PHP и MySQL, на основе системных требований Друпала.
Для обновления версии PHP используйте команду:
$ ddev config –-php-version 8.3
Для обновления версии MySQL и миграции содержания базы данных, используйте команду:
$ ddev debug migrate-database mariadb:10.11
После обновления этих параметров, я перезапускаю DDEV и запускаю свои тесты PHPUnit. Хотя все тесты интегрированы в мой процесс CI/CD, я запускаю их и локально, чтобы сразу увидеть результат.
Drupal Check это инструмент командной строки, который сканирует проекты Друпала и определяет устаревший код и проблемы совместимости. Я всегда запускаю drupal-check перед обновлением кода своего сайта и сторонних зависимостей. Это позволяет убедиться в отстутствии проблем с совместимость текущего кода перед обновлением. Также я запускаю drupal-check сразу после обновления, чтобы обнаружить любый новые проблемы в обновлённом коде.
Вывод команды Drupal Check, указывающий на отсутствие устаревшего кода:
Установка.
$ ddev composer require –dev mglaman/drupal-check
Запуск Drupal Check из корня установленного Друпала. Обычно я увеличиваю ограничение по памяти, поэтому в команде указано --memory-limit 500M.
$ ./vendor/bin/drupal-check –-memory-limit 500M docroot/modules/custom
В будущем, я хотел бы оценить, проще ли использовать PHPStan напрямую. Drupal Check это по сути оболочка вокруг PHPStan, предлагающая конфигурацию по умолчанию, например, автоматический запуск со второго уровня. Чтобы получить такой же результат в PHPStan, мне нужно было выполнить такую команду:
$ php vendor/bin/phpstan analyze -l 2 docroot/modules/custom