Best Practices für die Bereitstellung
Skripte erstellen und bereitstellen, die beim Zusammenführen von Code in einer Remote-Umgebung aktiviert werden. Diese Skripte verwenden UmgebungsKonfigurationsdateienAnwendungs-Code, um eine Cloud-Infrastruktur mit entsprechenden Daten und Services bereitzustellen. Außerdem werden diese Skripte zum Installieren oder Aktualisieren des Adobe Commerce-Programms, von Drittanbieterdiensten und benutzerdefinierten Erweiterungen in der Cloud-Umgebung verwendet.
Der Build- und Bereitstellungsprozess unterscheidet sich für jeden Plan geringfügig:
-
Starterpläne - Für die Integrationsumgebung erstellt jede aktive Verzweigung eine vollständige Umgebung und stellt diese bereit, um auf sie zuzugreifen und sie zu testen. Testen Sie den Code nach der Zusammenführung mit der
staging
Verzweigung vollständig. Um Ihre Site zu starten, pushen Siestaging
aufmaster
, um sie in der Produktionsumgebung bereitzustellen. Sie haben über die Cloud Console und die CLI-Befehle vollen Zugriff auf alle Verzweigungen. -
Pro-Pläne - Für die Integrationsumgebung erstellt jede aktive Verzweigung eine vollständige Umgebung und stellt diese bereit, um auf sie zuzugreifen und sie zu testen. Führen Sie Ihren Code mit der
integration
-Verzweigung zusammen, bevor Sie ihn mit der Staging- und Produktionsumgebung zusammenführen. Sie können mit der Cloud Console oder mit SSH- undmagento-cloud
-CLI-Befehlen mit der Staging- und Produktionsumgebung zusammenführen.
Verfolgen des Prozesses
Sie können Build- und Bereitstellungsaktionen in Echtzeit verfolgen, indem Sie das Terminal oder die Cloud Console Statusmeldungen - in-progress
, pending
, success
oder failed
- verwenden, die während des Bereitstellungsprozesses angezeigt werden. Details können in den Protokolldateien angezeigt werden. Siehe Protokolle anzeigen.
Wenn Sie externe GitHub-Repositorys verwenden, wird das Vorgangslog in der GitHub-Sitzung nicht angezeigt. Sie können jedoch weiterhin der Aktivität in der -Benutzeroberfläche für das externe Repository und die Cloud Console folgen. Siehe Integrationen.
Sie können " mit New Relic" aktivieren um Bereitstellungsereignisse zu überwachen und die Leistung zwischen Bereitstellungen zu analysieren.
Best Practices für Builds und die Bereitstellung
Lesen Sie diese Best Practices und Überlegungen für Ihren Bereitstellungsprozess:
-
Stellen Sie sicher, dass Sie die aktuelle Version des
ece-tools
ausführen -
Befolgen Sie den Build- und Bereitstellungsprozess
Stellen Sie sicher, dass Sie in jeder Umgebung den richtigen Code haben, um zu vermeiden, dass Konfigurationen beim Zusammenführen von Code zwischen Umgebungen überschrieben werden. Um beispielsweise Konfigurationsänderungen auf alle Umgebungen anzuwenden, ändern und testen Sie die Änderungen in der lokalen Umgebung, bevor Sie sie in der Remote-Integrationsumgebung bereitstellen. Stellen Sie dann die Änderungen in der Staging-Umgebung bereit und testen Sie sie, bevor Sie sie in der Produktion bereitstellen. Beim Zusammenführen von einer Umgebung in eine andere überschreibt die Bereitstellung den gesamten Code in der Umgebung, mit Ausnahme der umgebungsspezifischen Konfiguration und Einstellungen.
-
Verwenden Sie dieselben Variablen in allen Umgebungen
Die Werte für diese Variablen können je nach Umgebung unterschiedlich sein. Normalerweise benötigen Sie jedoch dieselben Variablen in jeder Umgebung. Siehe Konfigurationsverwaltung für Store-.
-
Vertrauliche Konfigurationswerte und Daten in umgebungsspezifischen Variablen beibehalten
Zu diesen Werten gehören Variablen, die über die Cloud-CLI oder die Cloud Console angegeben oder der
env.php
-Datei hinzugefügt wurden. Siehe Variablenebenen. -
Stellen Sie sicher, dass der gesamte Code in der Umgebungsverzweigung verfügbar ist
Verweise auf Code aus anderen Verzweigungen, z. B. einer privaten Verzweigung, können Probleme während des Build- und Bereitstellungsprozesses verursachen. Wenn Sie beispielsweise auf ein Design aus einer privaten Verzweigung verweisen, ist das Design nicht zugänglich und kann nicht mit dem Anwendungs-Code erstellt werden.
-
Hinzufügen von Erweiterungen, Integrationen und Code in iterierten Verzweigungen
Nehmen Sie Änderungen vor und testen Sie sie lokal, pushen Sie auf
integration
und dann aufstaging
undproduction
. Testen und Beheben von Problemen in jeder Umgebung, bevor die Aktualisierungen in der nächsten Umgebung zusammengeführt werden. Einige Erweiterungen und Integrationen müssen aufgrund von Abhängigkeiten in einer bestimmten Reihenfolge aktiviert und konfiguriert werden. Das Hinzufügen und Testen in Gruppen kann den Build- und Bereitstellungsprozess erheblich vereinfachen und bei der Ermittlung auftretender Probleme helfen. -
Überprüfen von Service-Versionen und -Beziehungen und der Möglichkeit, eine Verbindung herzustellen
Überprüfen Sie, welche Dienste für Ihr Programm verfügbar sind, und stellen Sie sicher, dass Sie die aktuelle, kompatible Version verwenden. Empfohlene Versionen finden Sie ServiceBeziehungen und 🔗Systemanforderungen im Installationshandbuch.
-
Testen Sie lokal und in der Integrationsumgebung, bevor Sie sie in der Staging- und Produktionsumgebung bereitstellen
Identifizieren und beheben Sie Probleme in Ihren lokalen und Integrationsumgebungen, um längere Ausfallzeiten bei der Bereitstellung in Staging- und Produktionsumgebungen zu verhindern.
note tip TIP Es gibt Smart Wizard-Befehle, mit denen Sie überprüfen können, ob Ihre Cloud-Projektkonfiguration Best Practices für die Build- und Bereitstellungskonfiguration entspricht, einschließlich der Strategie zur Bereitstellung statischer Inhalte (SCD). -
Nach Abschluss der Tests in lokalen Umgebungen und Integrationsumgebungen können Sie diese in der Staging-Umgebung bereitstellen und testen
-
Konfiguration der Produktionsumgebung überprüfen
Führen Sie vor der Bereitstellung in der Produktion die folgenden Aufgaben aus:
-
Stellen Sie sicher, dass Sie mit „SSH“ eine Verbindung zu allen drei Knoten in Produktionsumgebungkönnen.
-
Stellen Sie sicher, dass die Indexer auf Planmäßig aktualisieren eingestellt sind. Siehe Indizierungsmodi im Entwicklerhandbuch für Erweiterungen.
-
Bereiten Sie die Umgebung vor, indem Sie alle umgebungsspezifischen Variablen im Produktions-Code aktualisieren, die Verfügbarkeit und Kompatibilität der Services überprüfen und alle anderen erforderlichen Konfigurationsänderungen vornehmen.
-
-
Überwachen des Bereitstellungsprozesses
Überprüfen Sie die Bereitstellungsstatusmeldungen und beheben Sie Probleme nach Bedarf. Überprüfen Sie die Cloud Protokolle auf detaillierte Protokollmeldungen.
Fünf Phasen der Integration, Erstellung und Bereitstellung
Die folgenden Phasen treten in Ihrer lokalen Entwicklungsumgebung und der Integrationsumgebung auf. Bei Pro-Plänen wird der Code in diesen Anfangsphasen nicht in den Staging- oder Produktionsumgebungen bereitgestellt.
Phase 1: Validierung von Code und Konfiguration
Beim erstmaligen Einrichten eines Projekts ( Cloud-Infrastrukturvorlage stellt eine Grundlage für die Code-Dateien bereit. Dieses Code-Repository wird in Ihr Projekt als master
geklont.
- Für:
master
Verzweigung ist Ihre Produktionsumgebung. - Für Pro -
master
beginnt als Ursprungsverzweigung für die Integrationsumgebung.
Erstellen Sie eine Verzweigung aus master
für benutzerdefinierten Code, Erweiterungen und Module sowie Integrationen von Drittanbietern. Es gibt eine Remote-Integrationsumgebung zum Testen Ihres Codes in der Cloud.
Wenn Sie Ihren Code vom lokalen Arbeitsbereich in das Remote-Repository pushen, wird eine Reihe von Prüfungen und Code-Validierungen abgeschlossen, bevor die Erstellung und Bereitstellung von Skripten beginnt. Der integrierte Git-Server überprüft, was Sie per Push übertragen, und nimmt Änderungen vor. Wenn Sie beispielsweise einen OpenSearch-Service hinzufügen, überprüft der integrierte Git-Server, ob die Topologie Ihres Clusters entsprechend geändert wird.
Wenn in einer Konfigurationsdatei ein Syntaxfehler vorhanden ist, lehnt der Git-Server die Push-Benachrichtigung ab. Siehe Schutzblock.
Diese Phase wird auch composer install
ausgeführt, um Abhängigkeiten abzurufen.
Phase 2: Build
In dieser Phase werden die Codebasis erstellt und Hooks im build
Abschnitt von .magento.app.yaml
ausgeführt. Der standardmäßige Build-Hook ist der php ./vendor/bin/ece-tools
-Befehl und führt Folgendes aus:
- Wendet Patches in
vendor/magento/ece-patches
und optionale projektspezifische Patches inm2-hotfixes
an - Erstellt den Code und die Dependency Injection-Konfiguration (d. h. das
generated/
-Verzeichnis, dasgenerated/code
undgenerated/metapackage
enthält) mithilfe vonbin/magento setup:di:compile
neu. - Überprüft, ob die
app/etc/config.php
Datei in der Codebasis vorhanden ist. Adobe Commerce generiert diese Datei automatisch, wenn es sie während der Build-Phase nicht erkennt und eine Liste von Modulen und Erweiterungen enthält. Wenn sie vorhanden ist, wird die Build-Phase wie gewohnt fortgesetzt, komprimiert statische Dateien mithilfe von GZIP und stellt bereit, was die Ausfallzeiten in der Bereitstellungsphase reduziert. Unter Build-Optionen erfahren Sie, wie Sie die Dateikomprimierung anpassen oder deaktivieren.
Nachdem die Anwendung erstellt wurde, wird sie auf einem schreibgeschützten Dateisystem). Sie können bestimmte Bereitstellungspunkte konfigurieren, die gelesen/geschrieben werden sollen. Es ist nicht möglich, FTP auf den Server zu übertragen und Module hinzuzufügen. Stattdessen müssen Sie Code zu Ihrem lokalen Repository hinzufügen und git push
ausführen, das die Umgebung erstellt und bereitstellt. Informationen zur Projektstruktur finden Sie unter Lokale Projektverzeichnisstruktur.
Phase 3: Vorbereiten des Slug
Das Ergebnis der Build-Phase ist ein schreibgeschütztes Dateisystem, das als "" bezeichnet. In dieser Phase wird ein Archiv erstellt und der Slug dauerhaft gespeichert. Wenn Sie das nächste Mal Code pushen, verwendet ein Service, der sich nicht geändert hat, den Slug aus dem Archiv.
- Beschleunigt den Aufbau der kontinuierlichen Integration durch die Wiederverwendung von unverändertem Code
- Wenn sich der Code ändert, aktualisiert den Slug für den nächsten Build, um ihn wiederzuverwenden
- Ermöglicht bei Bedarf das sofortige Zurücksetzen einer Bereitstellung
- Enthält statische Dateien, wenn die
app/etc/config.php
in der Codebasis vorhanden ist
Der Slug umfasst alle Dateien und Ordner mit Ausnahme der folgenden Bereitstellungen, die in magento.app.yaml
konfiguriert sind:
"var": "shared:files/var"
"app/etc": "shared:files/etc"
"pub/media": "shared:files/media"
"pub/static": "shared:files/static"
Phase 4: Bereitstellen von Slugs und Clustern
Ihre Anwendungen und alle BackendServices stellen Folgendes bereit:
- mountet jeden Dienst in einem Container, z. B. Webserver, OpenSearch, RabbitMQ
- Bereitstellung des Lese-/Schreib-Dateisystems (bereitgestellt in einem hochverfügbaren verteilten Speicherraster)
- Konfiguriert das Netzwerk so, dass Dienste einander (und nur einander) „sehen“ können
Phase 5: Bereitstellungs-Hooks
Im letzten Schritt wird ein Bereitstellungsskript ausgeführt, mit dem Sie Daten in Entwicklungsumgebungen anonymisieren, Caches löschen und externe Tools für die kontinuierliche Integration abfragen können. Wenn dieses Skript ausgeführt wird, haben Sie Zugriff auf alle Services in Ihrer Umgebung, z. B. Redis.
Wenn die app/etc/config.php
-Datei nicht in der Codebasis vorhanden ist, werden statische Dateien mithilfe von gzip
komprimiert und während dieser Phase bereitgestellt, wodurch die Bereitstellungsphase und die Site-Wartung verlängert werden.
Es gibt zwei Bereitstellungs-Hooks. Der pre-deploy.php
-Hook schließt die erforderliche Bereinigung und das Abrufen von Ressourcen und Code ab, die im Build-Hook generiert wurden. Der php ./vendor/bin/ece-tools deploy
-Hook führt eine Reihe von Befehlen und Skripten aus:
-
Wenn Adobe Commerce nicht installiert wird mit
bin/magento setup:install
installiert, aktualisiert die Bereitstellungskonfiguration, dieapp/etc/env.php
und die Datenbank für Ihre angegebene Umgebung, z. B. Redis und Website-URLs. Wichtig: Nach Abschluss der Erstbereitstellung während des Setups wurde Adobe Commerce in allen Umgebungen installiert und bereitgestellt. -
Wenn Adobe Commerce installiert ist führen Sie alle erforderlichen Upgrades durch. Das Bereitstellungsskript wird
bin/magento setup:upgrade
ausgeführt, um das Datenbankschema und die Daten zu aktualisieren (was nach der Aktualisierung der Erweiterung oder des Kern-Codes erforderlich ist) und auch die Bereitstellungskonfiguration, dieapp/etc/env.php
und die Datenbank für Ihre Umgebung zu aktualisieren. Schließlich löscht das Bereitstellungsskript den Adobe Commerce-Cache. -
Das Skript generiert optional statischen Webinhalt mithilfe der
magento setup:static-content:deploy
. -
Verwendet Bereiche (
-s
Flag in Build-Skripten) mit der Standardeinstellungquick
für die Strategie zur Bereitstellung statischer Inhalte. Sie können die Strategie mithilfe der UmgebungsvariablenSCD_STRATEGY
anpassen. Weitere Informationen zu diesen Optionen und Funktionen finden Sie unter Strategien zur Bereitstellung statischer Dateien und-s
-Flag für Statische Ansichtsdateien bereitstellen.
.magento
definiert werden. Anschließend löscht das Skript das Verzeichnis und dessen Inhalte. Ihre lokale Entwicklungsumgebung ist davon nicht betroffen.Nach der Bereitstellung: Routing konfigurieren
Während der Bereitstellung stoppt der Prozess eingehenden Traffic am Einstiegspunkt für 60 Sekunden und konfiguriert das Routing neu, sodass Ihr Web-Traffic in Ihrem neu erstellten Cluster ankommt.
Bei erfolgreicher Bereitstellung wird der Wartungsmodus entfernt, um einen normalen Zugriff zu ermöglichen, und es werden Backup-Dateien (BAK) für die app/etc/env.php
- und app/etc/config.php
-Konfigurationsdateien erstellt.
Aktivieren Sie die statische Inhaltserstellung mit der SCD_ON_DEMAND
-Variablen und konfigurieren Sie den post_deploy
-Hook sodass der Cache gelöscht und der Cache vorgeladen (erwärmt) wird, nachdem Container beginnt, Verbindungen zu akzeptieren und (während normalen eingehenden Traffics.
Informationen zum Überprüfen von Build- und Bereitstellungsprotokollen finden Sie unter Protokolle anzeigen.