Оновлення ядра Drupal та модулів
Drupal використовує Composer для управління залежностями — оновлення ядра та модулів відбувається через нього. Без Composer (встановлення вручну) — переходьте на Composer-based setup, інакше кожне оновлення буде ручною операцією.
Підготовка
# Створити бекап БД
drush sql:dump --result-file=/backups/drupal-$(date +%Y%m%d).sql --gzip
# Бекап файлів (якщо немає автоматичного)
tar czf /backups/files-$(date +%Y%m%d).tar.gz /var/www/site/web/sites/default/files
# Включити режим обслуговування
drush state:set system.maintenance_mode 1 --input-format=integer
drush cr
Перевірка доступних оновлень
# Показати всі доступні оновлення
composer outdated "drupal/*"
# Тільки оновлення безопасності
drush pm:security
Оновлення ядра Drupal
# Оновити до останньої сумісної версії
composer update drupal/core-recommended drupal/core-composer-scaffold --with-all-dependencies
# Або до конкретної версії
composer require drupal/core-recommended:^10.3 --update-with-all-dependencies
# Застосувати оновлення БД
drush updatedb
# Оновити експортовану конфігурацію
drush config:export
git diff config/sync/
Оновлення модулів
# Оновити всі модулі разом
composer update "drupal/*" --with-all-dependencies
# Оновити конкретний модуль
composer require drupal/views:^3.14
# Після оновлення модулів
drush updatedb
drush cr
Major-версії: Drupal 9 → 10 → 11
Для major-оновлення користуйтесь Upgrade Status:
composer require drupal/upgrade_status
drush en upgrade_status -y
drush upgrade_status:analyze
Upgrade Status аналізує всі модулі на сумісність із цільовою версією, показує deprecated функції в кастомному коді.
# Drupal 9 → 10
composer require drupal/core-recommended:^10 --update-with-all-dependencies
# Застаріле API: перевіряємо через Rector
composer require --dev palantirnet/drupal-rector
vendor/bin/rector process web/modules/custom
Оновлення contrib модулів з breaking changes
Деякі модулі вимагають ручних дій при оновленні:
# Перевірити CHANGELOG модуля
cat vendor/drupal/webform/CHANGELOG.md | head -100
# Перевірити hook_update_N функції
drush php-eval "print_r(drupal_get_schema_versions('webform'));"
# Застосувати тільки оновлення конкретного модуля
drush updatedb --module=webform
Тестування після оновлення
# Відновити нормальний режим
drush state:set system.maintenance_mode 0 --input-format=integer
drush cr
# Запустити тести (якщо є)
./vendor/bin/phpunit web/modules/custom
# Перевірити логи на помилки
drush watchdog:show --severity=Error --count=50
CI/CD для автоматичних оновлень
# .github/workflows/security-updates.yml
name: Security Updates
on:
schedule:
- cron: '0 9 * * 1' # кожен понедельник
jobs:
update:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check security updates
run: composer audit
- name: Apply updates
run: composer update --with-all-dependencies
- name: Create PR if changes
uses: peter-evans/create-pull-request@v6
Терміни
Планове оновлення ядра та модулів Drupal з бекапом та тестуванням — 2–4 години. Major-оновлення з аналізом сумісності — 1–3 дня.







