Accueil / Blog / Métier / 2016 / Gestion de configuration, migration à Drupal 8 et DrupalCommerce

Gestion de configuration, migration à Drupal 8 et DrupalCommerce

Par Simon Georges — publié 14/06/2016
Mon compte-rendu du DrupalCamp Nantes 2016
Gestion de configuration, migration à Drupal 8 et DrupalCommerce

Le premier DrupalCamp depuis 2 ans, organisé du 10 au 12 juin 2016 à Nantes, a été l'occasion de constater une fois encore à quel point la communauté Drupal est soudée et partage énormément. N'ayant pu assister qu'à la première journée, je vais revenir sur les quelques points qui ont suscité le plus de discussions ou qui vont être, à mon avis, beaucoup utilisés à l'avenir.

Ce DrupalCamp était naturellement très centré sur Drupal 8.

Gestion de la configuration en Drupal 8

L'objectif de CMI

CMI, la Configuration Management Initiative, a initialement été développée pour pallier les difficultés de Drupal à déployer la configuration d'un site d'une instance de développement à une instance de production (notamment une fois le site déjà exploité en production). CMI transforme l'intégralité de la configuration du site en donnée exportable dans des fichiers Yaml, et reproduit (en allant plus loin) ce qui en Drupal 7 était réalisé par le module Features.

Le problème actuel

Si ce point (déployer un site en production, puis l'enrichir petit à petit de nouvelles configurations) fonctionne sans problème, collaborer à plusieurs développeurs sur un profil d'installation qui sera systématiquement relancé ne fonctionne pas : il faut nécessairement partir d'un dump de base de données commun pour permettre à la gestion de la configuration de Drupal 8 de correctement intégrer les données de configuration à importer. Sans cet import de base de données initial, les UUID (identifiants uniques des données de configuration) seront différents d'un site à l'autre, et l'export d'éléments de configuration d'un membre de l'équipe ne pourra être importé par un autre membre.

En juin 2016, au moment de ce Drupalcamp, plusieurs solutions permettent cependant de pallier ces défauts, notamment l'utilisation du module Configuration Update Manager qui permet d'importer des configurations indépendamment des UUIDs. Il sert de dépendance à l'ensemble des modules permettant de collaborer autour de la gestion de configuration Drupal 8, notamment Configuration development et surtout Features (qui, bien qu'étant la suite du module utilisé universellement en Drupal 7, évolue en Drupal 8 vers uniquement un gestionnaire de paquet). Mais ces solutions ne sont pas toujours entièrement satisfaisantes.

La solution (?)

Pour essayer de standardiser la communauté sur un (ou des) module(s) et surtout un processus de travail collaboratif permettant une gestion de configuration Drupal efficace, certains d'entre nous ont organisé un lightning talk (discussion improvisée en parallèle des conférences prévues dans le programme officiel) sur ce sujet.

Durant cette discussion, plusieurs personnes ont mentionné que les quelques écueils cités ci-dessus seraient corrigés dans la version 2.x-dev du cœur Drupal 8 (et donc que la version 8.2 serait complètement fonctionnelle sur ce sujet). Comme c'est actuellement le point majeur de douleur pour les développeurs Drupal, cette annonce m'a vraiment soulagé. Il ne reste plus qu'à le vérifier ;-)

Note : après vérification, il semble que les gens parlaient d'un patch qui n'a pas encore été commité : Allow a site to be installed from an existing configuration. À suivre donc.

Migration de Drupal 6 ou 7 à Drupal 8

Comme à chaque DrupalCamp en France, Aurélien Navarre présente un retour d'expérience extrêmement détaillé et très intéressant. Aujourd'hui, c'est sur la migration de la base de connaissance d'Acquia du Drupal 6 vers Drupal 8. Voici son diaporama.

Principaux enseignements

  • Toujours utiliser Drush pour réaliser les migrations (options supplémentaires, de bien meilleures performances) ;
  • Utiliser les versions les plus récentes (8.x-2.x) de tous les modules car le fonctionnement de Migrate a légèrement changé entre Dupal 8.0 et 8.1 ;
  • Utiliser les modules migrate_tools (commandes drush  similaires à celles du module Migrate en Drupal 7) et migrate_upgrade (commandes drush d'upgrade) ainsi que le module du cœur Migrate Drupal ;
  • Les commandes drush disponibles permettent de faire quasiment tout le travail (sur un site simple, vous n'avez rien à coder, les commandes suffisent).

Processus de migration

La commande drush migrate-upgrade --configure-only , à lancer en premier, va générer automatiquement les fichiers de migration nécessaires à la mise à jour du cœur de Drupal (la commande complète est disponible dans le diaporama). Sans l'option configure-only, la même commande exécute la migration complète… Mais sans aucun contrôle de notre part.

Aurélien recommande alors d'utiliser la commande drush migrate-import (qui permet même de choisir les plugins à migrer, permettant de ne migrer que les blocs ou les alias d'url, par exemple).

Le reste du diaporama présente des astuces ou des commandes complètes de migration, n'hésitez pas à vous en servir de référence.

Enfin, les migrations évoluent beaucoup, donc suivez l'actualité, et notamment le blog du mainteneur principal.

DrupalCommerce 2.x pour Drupal 8

Anne-Sophie Picot présente les nouveautés actuelles et envisagées pour la refonte de Commerce pour Drupal 8.

Voici sa présentation (déjà donnée dans une conférence précédente) :

Un futur prometteur

De nombreuses améliorations ont été intégrées dans la suite de modules Drupal Commerce pour Drupal 8 :

  • support natif des installations multi-stores (place de marché, gestion par pays, …) ;
  • gestion plus fine des statuts de commandes (en fonction de conditions remplies ou non par divers paramètres) ;
  • support des variations de produit, toute entité Drupal 8 peut se transformer en produit ;
  • l'ajout au panier est mode d'affichage spécial de formulaire, finement configurable ;
  • création de plusieurs tunnels d'achat possibles (A/B testing, produits spéciaux, …) ;
  • gestion d'historique de taxes.

Bref, comme pour Drupal 8, énormément de fonctionnalités ont été intégrées au cœur et tirent parti des possibilités de Drupal 8, permettant des fonctionnalités e-commerces hautement personnalisables.

Un présent mitigé

Si toutes ces fonctionnalités peuvent faire naître l'enthousiasme pour la nouvelle version de Drupal Commerce,  la version actuelle n'est pas du tout stable et comporte encore quelques manques (il n'existe par exemple pas de module ou d'API de paiement). C'est naturel pour une solution non stabilisée, mais cela signifie qu'il va falloir attendre quelques mois avant de réaliser des sites e-commerce avec Drupal 8. Une version bêta devrait voir le jour avant (ou au moment de) la prochaine DrupalCon.

Cependant, la solution devrait déjà être viable pour réaliser des catalogues produit sans tunnel d'achat ni paiement.

Pour suivre l'actualité, suivez le blog de l'équipe de développement.

Le pouvoir de la communauté

Cette seule journée de conférence a été, à nouveau, l'occasion de constater que la communauté facilite grandement la montée en compétence ("ensemble, on va plus loin"). En tant que développeur Drupal, vous devez savoir utiliser correctement la communauté. N'hésitez pas à aller aux prochaines rencontres dans votre ville ou aux prochaines conférences.

Merci et bravo à toute l'équipe d'organisation de ce Drupalcamp ! Retrouvez l'ensemble des présentations sur la chaîne YouTube dédiée.

ABONNEZ-VOUS À LA NEWSLETTER !
Voir aussi
Mon Top 30 des modules Drupal 8 Mon Top 30 des modules Drupal 8 16/02/2019

Transcription d'une conférence donnée au Drupalcamp Paris 2019

Drupal : un CMS pas comme les autres Drupal : un CMS pas comme les autres 15/02/2019

Mais moi je l'aime, c'est pas de ma faute…

Makina Corpus au Drupalcamp du 15 au 17 février Makina Corpus au Drupalcamp du 15 au 17 février 13/02/2019

Conférences et atelier, rejoignez-nous !

Drupal 8 : Dynamiser vos contenus à l'aide des formulaires AJAX Drupal 8 : Dynamiser vos contenus à l'aide des formulaires AJAX 18/12/2018

Utiliser les AjaxCommands de l'API de Drupal 8 pour agir sur le Markup

Une usine à sites en Drupal Une usine à sites en Drupal 18/12/2018

Qu'est ce que c'est, et en avez-vous besoin ?