Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)
Migration Salamandre Drupal 10
== Introduction == 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
- 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
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
- 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
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
Désinstaller depuis /admin/modules/uninstall : color, Quick Edit et RDF.
Retrait des modules installés et non utilisés
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
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
- Menu Export
- cache_clear_shortcut
Problèmes à corriger manuellement
Compatibilité multi-versions
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
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
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
Correction du module social_media par patch (cf. ci-dessus pour voir l'appel du patch).
Correction classique du thème Barrio
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
- 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
composer update puis synchronisation
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
- 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