Les mises à jour dans Drupal
Culture générale sur les mises à jour Drupal
En quoi consistent les mises à jour dans Drupal ? Nous parlerons un peu technique mais pas trop.
Les différents types de mises à jour (releases)
Les releases Drupal, pour le coeur (core), les modules et thèmes de contribution reçoivent différents types de mises à jour:
- Les mises à jours de sécurité: à effectuer en priorité,
- Les mises à jours fonctionnelles, qui permettent de faire évoluer le module,
- Les mises à jour techniques: souvent non visibles, ce sont les correctifs reçus dans les listes des anomalies ("issues") dans drupal.org: https://www.drupal.org/project/issues/
Mise à jour du coeur de Drupal
Depuis Drupal 8, le cœur de Drupal est basé sur Symfony. Les modules sont parfois dépendants de librairies stockées dans Vendor (PHP) ou Libraries(Javascript).
Les process se sont professionnalisés. Les téléchargements ne sont plus manuels. On utilise l’outil Composer pour installer les modules et dépendances. La documentation Drupal aide à la mise à jour par version ou globale. Chaque release (version mineure) suggère la ligne de commande à exécuter. Liste des releases Drupal: https://www.drupal.org/project/drupal/releases .
L’exécution de la commande via Composer importe automatiquement le cœur (core) de Drupal, contenant les modules du cœur (core), les librairies JS (libraries) et PHP (vendor) associées. Les unes sont stockées dans le répertoire libraries, les autres dans le répertoire vendor.
Suite à la mise à jour du coeur de Drupal, il est nécessaire d’effectuer une mise à jour de la base de données et de vider les caches.
Cette seconde étape est réalisée par les commandes drush:
drush updb
drush cr
Le cœur reçoit une mise à jour de sécurité une fois par mois environs.
Mise à jour des modules de contribution
Tout comme pour importer le cœur de Drupal, chaque module de contribution est importé via la commande composer update drupal/<module>
composer require drupal/<module>
Il peut arriver que les versions de modules soient incompatibles et nécessitent un temps d’investigation autour des librairies en place mais globalement, la mise à jour côté Drupal est fluide.
Du point de vue fonctionnel, il arrive que des modules de contribution évoluent. Ces cas nécessitent une investigation et parfois de la reconfiguration, voire l'adaptation des modules personnalisés associés.
Après mise à jour des modules la structure de la base de données peut être mise à jour et les caches:
Drush updb
Drush cr
Note importante: les mises à jour sont d'abord éprouvées en environnement de développement,à distinguer des environnements de tests et de production.
Mise à jour des entités
Il arrive plus rarement que le rapport de statut de Drupal vous informe d'une mise à jour d'entité. Dans ce cas, on doit activer temporairement le module Devel qui fournit les outils. Cette opération est à effectuer dans tous les environnements.
Dans l'environnement de développement, ouvrir le terminal de commandes et se positionner dans le répertoire du site contenant les fichiers composer.json et composer.lock.
Exécutuer les commandes suivantes:
- Import du module Devel:
composer require drupal/devel
- Installation du module dans Drupal
drush en devel
- Exécution de la commande de mise à jour des entités:
drush entup
- Désinstallation du module Devel:
drush pmu devel
- Suppression du package Devel:
composer remove drupal/devel
Tests fonctionnels
Les fonctionnalités de votre site ne doivent pas avoir changé entre 2 releases du coeur de Drupal.
Il est nécessaire de contrôler les éventuels changements de configuration des modules et le bon fonctionnement du site en environnement de développement et/ou de tests avant le déploiement par des tests de non régression. Le mieux est d'avoir automatisé les tests de non régression afin de pouvoir les exécuter avant chaque déploiement.
Dans le cas où les tests automatisés n'ont pas été développés, il faut globalement :
- naviguer dans le site, en desktop et en responsive,
- ajouter, modifier les contenus,
- soumettre les formulaires.
Pendant ces tests, il faut activer les journaux afin d’y capturer tout message d’erreur PHP ou provenant d’un module.
L'importance de la sauvegarde
Avant tout déploiement, la sauvegarde du projet en production doit être réalisée: sauvegarde de l'arborescence et de la base de données.
Cette sauvegarde doit pouvoir être restaurée en cas de problème après déploiement.
Le déploiement de la mise à jour
Le déploiement consiste à transférer la mise à jour sur les serveurs en production (hébergement).
Il peut être réalisé par des outils de déploiements automatisés ou manuellement via les protocoles FTP/SSH de transferts de fichiers.