Dans quel ordre importer la configuration et mettre à jour les modules?

10

Étant donné que la version de schéma des modules est stockée dans le stockage de valeurs-clés, elle est unique pour chaque site et n'est pas synchronisée via la gestion de la configuration. Cela a du sens, car les mises à jour peuvent nécessiter des ajustements qui ne sont pas encapsulés dans la configuration (telles que les mises à jour de la base de données), mais il existe d'autres modifications qui peuvent également être incluses dans la configuration (par exemple, ajouter une nouvelle valeur de configuration).

  • Y a-t-il des risques à exécuter l'importation de configuration et les mises à jour de base de données dans l'un ou l'autre ordre?
  • Quel est l'ordre préféré pour exécuter ces opérations?
  • Les crochets de mise à jour doivent-ils faire des aménagements spéciaux pour les éléments de configuration qui ont peut-être déjà été importés?
  • Y a-t-il d'autres opérations qui peuvent être nécessaires pour mettre à jour complètement l'environnement de production?
gapple
la source
Problème connexe: drupal.org/node/2901418 :
milkovsky

Réponses:

12

Les mises à jour doivent être exécutées avant l'importation de la configuration

Un problème en attente contre le noyau garantira que les versions de code et de schéma correspondent avant d'autoriser l'importation de la configuration .


Problèmes avec l'importation de configuration avant les mises à jour

  • Un hook de mise à jour reposant sur une valeur de configuration peut aboutir à un résultat différent de celui s'il était exécuté sur la valeur de pré-importation.

  • Une mise à jour peut potentiellement échouer si elle essaie de créer des entités de configuration qui existent déjà.

Préoccupations concernant l'importation de configuration après les mises à jour

  • Si une mise à jour qui introduit une nouvelle entité de configuration est exécutée en premier, elle créera un nouvel élément de configuration qui aura un UUID différent de celui qui est dans la configuration. Cependant, une fois la configuration importée, l'entité doit être remplacée par la version de configuration.

    Il pourrait y avoir un problème potentiel si le remplacement de l'entité affectait le contenu associé. Par exemple, si une mise à jour migre le contenu d'un champ vers un autre, lors de l'importation de la configuration, le champ sera complètement remplacé et le contenu potentiellement perdu. Dans ce cas, le processus de déploiement peut devoir être ajusté pour exécuter les mises à jour sur l'environnement cible et exporter la configuration résultante.

gapple
la source
J'avais précédemment laissé une réponse selon laquelle l'ordre n'a pas d'importance (juste que l'ordre des mises à jour et de la configuration doit être le même que celui qu'il a été mis en œuvre). Je pense que j'avais tort, car vous devriez toujours exporter la configuration après la mise à jour. Donc, sur local, mettez à jour puis exportez, sur déployez, mettez à jour puis importez.
ognockocaten
Comme l'explique le problème lié, il y a un cas où nos mises à jour d'entité nécessitent l'importation d'un nouveau champ, sinon le hook post_update échouera. Dans ce cas, nous avons besoin d'importer la configuration avant la mise à jour de la base de données. Il semble que la version la plus récente
atwixtor