In welcher Reihenfolge sollten Konfigurationsimport und Modulaktualisierungen ausgeführt werden?

10

Da die Schemaversion von Modulen im Schlüsselwertspeicher gespeichert ist, ist sie für jeden Standort eindeutig und wird nicht über das Konfigurationsmanagement synchronisiert. Dies ist sinnvoll, da Aktualisierungen möglicherweise Anpassungen vornehmen müssen, die nicht in der Konfiguration enthalten sind (z. B. Datenbankaktualisierungen). Es gibt jedoch auch andere Änderungen, die möglicherweise in der Konfiguration enthalten sind (z. B. Hinzufügen eines neuen Konfigurationswerts).

  • Gibt es Risiken beim Ausführen von Konfigurationsimporten und Datenbankaktualisierungen in beiden Reihenfolgen?
  • Was ist die bevorzugte Reihenfolge für die Ausführung dieser Vorgänge?
  • Müssen Update-Hooks spezielle Anpassungen für Konfigurationselemente vornehmen, die möglicherweise bereits importiert wurden?
  • Gibt es andere Vorgänge, die möglicherweise erforderlich sind, um die Produktionsumgebung vollständig zu aktualisieren?
gapple
quelle
Verwandte Ausgabe: drupal.org/node/2901418 :
Milkovsky

Antworten:

11

Updates müssen ausgeführt werden, bevor die Konfiguration importiert wird

Ein anstehendes Problem mit dem Core stellt sicher, dass die Code- und Schemaversionen übereinstimmen, bevor die Konfiguration importiert werden kann .


Probleme beim Konfigurationsimport vor Updates

  • Ein Update-Hook, der auf einem Konfigurationswert basiert, kann zu einem anderen Ergebnis führen, als wenn er mit dem Wert vor dem Import ausgeführt würde.

  • Ein Update kann möglicherweise fehlschlagen, wenn versucht wird, bereits vorhandene Konfigurationsentitäten zu erstellen.

Bedenken hinsichtlich des Konfigurationsimports nach Updates

  • Wenn zuerst ein Update ausgeführt wird, das eine neue Konfigurationsentität einführt, wird ein neues Konfigurationselement erstellt, dessen UUID sich von der in der Konfiguration unterscheidet. Sobald die Konfiguration importiert wurde, sollte die Entität jedoch durch die Konfigurationsversion ersetzt werden.

    Hier könnte ein potenzielles Problem auftreten, wenn das Ersetzen der Entität den zugehörigen Inhalt beeinträchtigen würde. Wenn ein Update beispielsweise Inhalte von einem Feld in ein anderes migriert, wird das Feld beim Konfigurationsimport vollständig ersetzt und der Inhalt geht möglicherweise verloren. In diesem Fall muss der Bereitstellungsprozess möglicherweise angepasst werden, um die Aktualisierungen in der Zielumgebung auszuführen und die resultierende Konfiguration zu exportieren.

gapple
quelle
Ich hatte zuvor eine Antwort hinterlassen, dass die Reihenfolge keine Rolle spielt (nur, dass die Reihenfolge der Updates und der Konfiguration dieselbe sein sollte, wie sie implementiert wurde). Ich denke, ich habe mich geirrt, weil Sie die Konfiguration nach dem Update immer exportieren sollten. Aktualisieren, exportieren, exportieren, aktualisieren und importieren.
ognockocaten
Wie das verknüpfte Problem beschreibt, gibt es einen Fall, in dem für unsere Entitätsaktualisierungen ein neues Feld importiert werden muss, oder der Hook post_update schlägt fehl. In diesem Fall muss der Konfigurationsimport durchgeführt werden, bevor die Datenbank aktualisiert wird. Die aktuellste
Version davon