Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)
« Migration Salamandre Drupal 10 » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
| Ligne 1 : | Ligne 1 : | ||
[[category:Drupal]][[category:Drupal 10]][[category:Salamandre]]== Introduction == | [[category:Drupal]][[category:Drupal 10]][[category:Salamandre]] | ||
== Introduction == | |||
La montée en version D8 vers D9.5.4 limite les problèmes de compatibilité. | La montée en version D8 vers D9.5.4 limite les problèmes de compatibilité. | ||
Dernière version du 20 septembre 2024 à 10:43
Introduction
[modifier | modifier le wikicode]La montée en version D8 vers D9.5.4 limite les problèmes de compatibilité.
Cependant, les problèmes sont plus difficile à régler pour les modules contribués anciens, car les développeurs ne les maintiennent plus.
Deux solutions :
- Solliciter les développeurs et attendre un correctif (patch),
- Réaliser le patch.
La montée en version s'effectue en deux temps :
- Sur notre serveur de recette
- Sur Salamandre en production
Préparation côté Salamandre
[modifier | modifier le wikicode]- Mettre à jour Drupal Salamandre (9.5.4 -> 9.5.5). Lancer un composer update --dry-run avant. Si problème, analyser avec $ drush ws, $ drush cr, vidage cache dans Drupal et update.php
- Synchronisation > Exportez la configuration : /admin/config/development/configuration/full/export
- Copier le fichier composer.json
Serveur de recette CDF
[modifier | modifier le wikicode]La montée en version de Drupal 8 vers Drupal 9.5.4 est récente.
- http://mw.ajlsm.com/wiki/Migration_Salamandre_vers_Drupal_9
- http://mw.ajlsm.com/wiki/Synchronisation_Drupal_:_site_dev_avec_site_prod
On ne ré-installe pas la version de production sur Mercure (serveur de recette).
Synchronisation de cdf-recette
[modifier | modifier le wikicode]- Vider le contenu du répertoire /config/sync/ et le rendre inscriptible.
- Remplacer le contenu du fichier composer.json par celui de composer.json de Drupal Salamandre.
- Mettre à jour Drupal cdf-recette. Lancer un composer update --dry-run avant. Si problème, analyser avec $ drush ws, $ drush cr, vidage cache dans Drupal et update.php
- Synchronisation > Importer la configuration : /admin/config/development/configuration/full/import
L'import remonte 3 différences. On importe. Pas de problème.
Upgrade status
[modifier | modifier le wikicode]Si non présent, intaller la version US pour la montée en version D9 -> D10
composer require 'drupal/upgrade_status:^4'
Retrait des modules obsolètes
[modifier | modifier le wikicode]Désinstaller depuis /admin/modules/uninstall : color, Quick Edit et RDF.
Retrait des modules installés et non utilisés
[modifier | modifier le wikicode]Module à supprimer : ckeditor_media_embed
- Supprimer la ligne suivante dans le fichier composer.json :
"drupal/ckeditor_media_embed": "^1.11",
- Mettre à jour Drupal : composer update
Modules dont la non compatibilité peut être corrigée avec rector
[modifier | modifier le wikicode]Ne fonctionne pas dans l'environnement.
Les modules concernés sont 2 modules installés "à la main" par Indelebil : /web/modules/custom/indelebil.
Ils sont aussi installés dans les modules contribués où ils sont potentiellement à jour : /web/modules/contrib/indelebil.
Ok pour le module bg_image_formatter
Nok pour le module cache_clear_shortcut.
Chercher les issues dans Drupal pour ce module. La plupart des modules non supportés ont eu un patch généré automatiquement. À modifier dans le code du module.
Ne fonctionne pas après modifications dans le code.
Modules non compatible et supprimés
[modifier | modifier le wikicode]- Menu Export
- cache_clear_shortcut
Problèmes à corriger manuellement
[modifier | modifier le wikicode]Compatibilité multi-versions
[modifier | modifier le wikicode]La plupart des problèmes rencontrés sont résolus en ajoutant le core_requirement dans les fichiers module.info.yml
core_version_requirement: ^8.9 || ^9 || ^10
Pour identifier rapidement les fichiers concernés, lancer un grep dans le répertoire drupal/web.
Par exemple :
grep -rnw '/home/ajlsm/recette/cdf/drupal/web/' -e 'core_version_requirement'
Ce grep renvoie le path et le nom du fichier, la ligne où l'expression est trouvée et l'expression.
On corrige tous ceux qui ne contiennent pas ce core_requirement, ou dont le core_requirement est incomplet.
Par exemple :
core: 8.x
core_version_requirement: ^8.9 || ^9
Modification du code twig 1 -> twig 2
[modifier | modifier le wikicode]Concerne le thème utilisé par Indelebil pour charger la page d'accueil avec le slider et les vignettes d'accès aux rubriques (formulaires de recherches).
Dans le template : web/themes/custom/pleade_barrio/templates/views-view-fields--sous-ensembles.html.twig, le code twig utilisé pour "for" et "if" est déprécié.
Upgrade Status précise le type d'erreur :
Using an "if" condition on "for" tag in
"themes/custom/pleade_barrio/templates/views-view-fields--sous-ensembles.html.twig"
at line 2 is deprecated since Twig 2.10.0, use a "filter" filter or an "if" condition
inside the "for" body instead (if your condition depends on a variable
updated inside the loop). See https://drupal.org/node/3071078.
On doit utiliser un "filter".
Remplacement du code de la ligne 2 :
{% for key, field in fields if key != 'field_image_list' -%}
Par :
{% for key, field in fields|filter((field, key) => field and key != 'field_image_list') -%}
Modules mis à jour dans composer.json
[modifier | modifier le wikicode]Après la tentative de mise à jour vers D10 avec :
composer update --dry-run
Plusieurs modules doivent être mis à jour dans le fichier composer.json pour passer les erreurs.
Voici le diff entre les deux versions de composer.json : "<" après (configuration à appliquer) et ">" avant (doit être remplacé) :
40c40
< "drupal/back_to_top": "^3.0",
---
> "drupal/back_to_top": "^1.0",
42,51c42,54
< "drupal/bg_image_formatter": "^1.16",
< "drupal/block_styles_bootstrap": "^2",
< "drupal/bootstrap_barrio": "^5",
< "drupal/captcha": "^2.0@beta",
< "drupal/core": "10.0.5 as 9.5.5",
< "drupal/core-composer-scaffold": "^10",
< "drupal/core-project-message": "^10",
< "drupal/core-recommended": "^10",
< "drupal/crop": "^2.3",
< "drupal/ctools": "^4.0",
---
> "drupal/bg_image_formatter": "^1.15",
> "drupal/block_styles_bootstrap": "^1.2",
> "drupal/bootstrap_barrio": "^4.33",
> "drupal/cache_clear_shortcut": "^2.0",
> "drupal/captcha": "^1.0@beta",
> "drupal/ckeditor_media_embed": "^1.11",
> "drupal/console": "^1.0.2",
> "drupal/core": "^9",
> "drupal/core-composer-scaffold": "^9",
> "drupal/core-project-message": "^9",
> "drupal/core-recommended": "^9",
> "drupal/crop": "^2.0",
> "drupal/ctools": "^3.2",
54c57
< "drupal/google_analytics": "^4.0",
---
> "drupal/google_analytics": "^3.0",
57,58c60
< "drupal/imce": "^3",
< "drupal/jquery_ui": "^1.6",
---
> "drupal/imce": "^2.3",
60a63
> "drupal/menu_export": "^1.2",
69c72
< "drupal/mimemail": "^1.x-dev@dev",
---
> "drupal/mimemail": "^1.0@alpha",
76c79
< "drupal/simple_sitemap": "^4.1",
---
> "drupal/simple_sitemap": "^3.3",
85c88
< "drupal/views_bootstrap": "^5.5@alpha",
---
> "drupal/views_bootstrap": "^4.1",
90,91c93
< "drush/drush": "^11",
< "symfony/yaml": "^6.2",
---
> "drush/drush": "^10.6",
153,157d154
< }
< },
< "patches": {
< "drupal/social_media": {
< "Notice : Compatible D10": "web/patches/social_media.patch"
En attendant une mise à jour de back_to_top par le contributeur, il faut garder la rétro-compatibilité avec D9 comme suit :
"drupal/core": "10.0.5 as 9.5.5"
Correction du code par patch
[modifier | modifier le wikicode]Correction du module social_media par patch (cf. ci-dessus pour voir l'appel du patch).
Correction classique du thème Barrio
[modifier | modifier le wikicode]Génère un problème d'affichage et un conflit avec le module Pleade.
Pour corriger, commenter les lignes 579 à 593 du fichier : web/themes/contrib/bootstrap_barrio/bootstrap_barrio.theme
Préparation synchronisation vers Salamandre
[modifier | modifier le wikicode]- Sauvegarde BD et archive de Drupal/internet
- Export de la configuration de synchronisation : /admin/config/development/configuration/full/export
- Copie du contenu du fichier composer.json de cdf/drupal vers salamandre/home/ajlsm/drupal/internet/
- Sur Salamandre : vider le contenu du répertoire salamandre/home/ajlsm/drupal/internet/config/sync/
Synchronisation
[modifier | modifier le wikicode]composer update puis synchronisation
[modifier | modifier le wikicode]Suite aux migrations précédentes, on veut lancé la synchronisation UNIQUEMENT après fait un composer update avec le contenu du fichier composer.json de la recette.
Après avoir remplacé la version composer.json de cdf vers Salamandre :
- Lancer un composer update --dry-run : Ok
- Lancer un composer update : Ok
- Lancée les commandes :
- $ drush cr : ok,
- $ drush ws : nok, énormément d'erreurs.
Synchronisation puis composer update
[modifier | modifier le wikicode]- Retour en arrière : remplacement du contenu de composer.json par l'original (salamandre 9.5.5).
- Lancer un composer update --dry-run : Ok
- Lancer un composer update : Ok
- $ drush cr : ok
- $ drush ws : Problème Thème barrio habituel : Error: Call to a member function bundle() on string in bootstrap_barrio_theme_suggestions_page_alter() (line 590) - Commenter toute la section ligne 579 à 593 (Voir avec $ drush ws quelle est la ligne à commenter)
- On retrouve Drupal : vidage des caches
- S'assurer que le répertoire de salamandre drupal/internet/config/sync est vide
- Import de la configuration de synchronisation de la recette : admin/config/development/configuration/full/import
- Synchroniser : tout importer : OK
- Vider les caches Drupal
- lancer /update.php : L'update remonte des erreurs de configuration qui doivent être corrigés pour finaliser l'update. Quelques modules n'ont pas leur fichier .info.yml à jour avec les bons requirements. Faire les corrections.
- Update : OK.
- Vider les caches : OK