Sortie de Drupal 9 et mise à jour depuis Drupal 8
- Blog
- CMS
- Sortie de Drupal 9 et mise à jour depuis Drupal 8
Drupal 9.0 va sortir le 3 juin 2020. Nous sommes donc à huit mois de la sortie officielle de la première version de D9.
Il faut savoir également qu’une branche de Drupal 9 est commutée sur un repository, le code y est disponible, il est donc possible dès à présent de tester la version alpha de D9. Sur cette branche de développement, les contributeurs sont en train de supprimer du code déprécié et ont mis à jour la version Symfony 4.4. Dries fera même remarqué que le fait d’avoir cette branche et “le produit” testable rend la chose réelle !
Vous souhaitez en savoir plus sur les avantages de Drupal 9 ?
Prenez un rendez-vous de 15 minutes pour discuter :
Elsa Bestault
Head of Digital Consulting
Un des engagements de Dries (et des contributeurs en charge du développement de D9) est de rendre la mise à jour d’une version Drupal 8 à Drupal 9 très facile, “la plus facile de ces dernières décennies” nous indique-t-il.
La mise à jour d’un site à même été démontrée avec un exemple plutôt simple; postulat de départ :
La personne en charge du site web connait Drupal et à des notions de développements. Le site en version Drupal 8 possède :
- Plusieurs modules contrib dont le fameux eu cookie compliance
- Un module custom, développée par la propriétaire du site
Cette montée de version se déroule en quatre étapes:
- Installation du module update status sur le site Drupal 8
- Mise à jour des modules contrib
- Mise à jour des modules custom
- Mise à jour du core de Drupal vers D9
Voici le détail de ces étapes :
1. Installer le module update status sur le site Drupal 8
Il se fait par exemple, via composer afin de télécharger également toutes les dépendances liées au module : composer require drupal/upgrade_status.
Puis installation du module via le back office de Drupal.
2. Mettre à jour les modules contrib
Il se fait en utilisant le module update status. Une interface permet de sélectionner parmi la liste des modules contrib les modules à scanner.
Une analyse de code est lancée en arrière plan afin de vérifier la compatibilité du module avec la version D9 en comparant les usages de code et les codes dépréciés.
Une fois l’analyse terminée le rapport montre via un UI simpliste si les modules sont compatibles avec Drupal 9 :
Dans ce cas, c’est le module EU Cookie Compliance qui n’est pas compatible car il utilise du code déprécié. La solution proposée par le module update status est de le mettre à jour. Une fois cette mise à jour réalisée et le module re-scanné en version 1.8, l’erreur disparaît (la dernière version étant compatible D9).
3. Mettre à jour les modules custom
Le principe de compatibilité des modules custom est similaire à celui détaillé à l’étape 2. Ils doivent être scannés par Status Update afin de vérifier la qualité du code. Dans ce cas, le module identifie des erreurs claires, qui nécessitent d’être corrigées à la main :
Le warning (en jaune) prévient qu’il faut déclarer le module comme étant compatible avec la version 9 de Drupal. Cela se fait dans le fichier info.yml du module.
L’erreur (en rouge) provient du fait que la fonction drupal_set_message n’existe plus en D9, elle a été dépréciée au profit d’un service, ainsi le code suivant :
drupal_set_message($message); en D8
se transformera en
$this-messenger-addMessage($message); sur une version D9
4. Mettre à jour le core de Drupal vers D9
La mise à jour du core de Drupal peut se faire via composer en utilisant les commandes suivantes :
composer require drupal/core-recommended:~9.0.0@dev --no-update
composer require --dev drupal/dev-dependencies:~9.0.0@dev --no-update
composer update
Le module update_status est prêt et disponible dès aujourd’hui, il est donc possible de tester la compatibilité des modules contrib custom et d’orienter les développements vers des versions pouvant être compatibles à la fois avec Drupal 8 9.
Les sites développés aujourd’hui possèdent beaucoup plus de module que l’exemple cité. Cependant le principe de mise à jour reste le même et n’a rien à voir avec le passage de Drupal 7 vers Drupal 8.
Aujourd’hui à approximativement 8 mois de la sortie de Drupal 9, voici l’état des lieux du travail restant à faire sur les modules contrib :
- 16% des modules contrib sont prêts à l’utilisation sur un drupal 9
- 50% des modules contrib sont presque prêts à l’utilisation sur un Drupal 9, ils nécessitent des adaptations mineurs
- 29% de ces modifications seront gérées uniquement en adaptant une ligne de code (exemple du drupal_set_message)
- 34% des modules contrib seront mis à jour plus difficilement car nécessitant la revue de leur architecture et/ou des modifications majeures de codes.