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

De AJLSM
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 1 : Ligne 1 :
[[category:Drupal]][[category:Drupal 10]]== 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é.



Version du 20 septembre 2024 à 10:43

== 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 :

  1. Solliciter les développeurs et attendre un correctif (patch),
  2. Réaliser le patch.

La montée en version s'effectue en deux temps :

  1. Sur notre serveur de recette
  2. Sur Salamandre en production

Préparation côté Salamandre

  1. 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
  2. Synchronisation > Exportez la configuration : /admin/config/development/configuration/full/export
  3. 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.

On ne ré-installe pas la version de production sur Mercure (serveur de recette).

Notice :
Pour les autres migration de Drupal 9 vers D10, il faut faire une copie du Drupal en production, et le ré-installer sur Mercure avant de faire la montée en version..

Synchronisation de cdf-recette

  1. Vider le contenu du répertoire /config/sync/ et le rendre inscriptible.
  2. Remplacer le contenu du fichier composer.json par celui de composer.json de Drupal Salamandre.
  3. 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
  4. 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

  1. Supprimer la ligne suivante dans le fichier composer.json :
    "drupal/ckeditor_media_embed": "^1.11",
    
  2. 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"
Important :
Plusieurs modules ne sont pas compatibles avec D10, comme back_to_top, ou console, menu_export, clear_cache_shortcut,.. Tous ceux qui ne sont pas nécessaires ont été retirés, sauf back_to_top, toujours utilisé..

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

  1. Sauvegarde BD et archive de Drupal/internet
  2. Export de la configuration de synchronisation : /admin/config/development/configuration/full/export
  3. Copie du contenu du fichier composer.json de cdf/drupal vers salamandre/home/ajlsm/drupal/internet/
  4. Sur Salamandre : vider le contenu du répertoire salamandre/home/ajlsm/drupal/internet/config/sync/

Synchronisation

composer update puis synchronisation

Important :
La suite est dépréciée.

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 :

  1. Lancer un composer update --dry-run : Ok
  2. Lancer un composer update : Ok
  3. Lancée les commandes :
  • $ drush cr : ok,
  • $ drush ws : nok, énormément d'erreurs.
Notice :
C'est le coup de l'œuf et la poule. Comme la synchronisation des configurations n'est pas faites, la mise à jour vers D10 n'est pas possible. Page blanche sur Salamandre... Tentative de corrections non prises en compte. Impossible de lancer la synchronisation et le update.

Synchronisation puis composer update

  1. Retour en arrière : remplacement du contenu de composer.json par l'original (salamandre 9.5.5).
  2. Lancer un composer update --dry-run : Ok
  3. Lancer un composer update : Ok
  4. $ drush cr : ok
  5. $ 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)
  6. On retrouve Drupal : vidage des caches
  7. S'assurer que le répertoire de salamandre drupal/internet/config/sync est vide
  8. Import de la configuration de synchronisation de la recette : admin/config/development/configuration/full/import
  9. Synchroniser : tout importer : OK
  10. Vider les caches Drupal
  11. 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.
  12. Update : OK.
  13. Vider les caches : OK