mich würde interessieren, wie sich hier die Workflows gestalten und stelle meinen und das Problem daran hier vor:
Mein Plan ist, lokal zu entwickeln, dann einem Online-Staging zuzuführen um einer Testgruppe die Möglichkeit zu geben, neue Features und Änderungen zu testen und dann als Release in die Produktiv-Umgebung zu übergeben.
Das Setup:
eine lokale Development-Umgebung über vagrant aufgebaut. Version: v6.1.9 Stable Version 999999.9999999
Als Staging habe ich die Produktiv-Umgebung per Zip-Download Shopware auf einer Ubuntu 18.04 als Cloud-Server laufen. Version: v6.1.1 Stable Version Produktiv ist noch nicht eingerichtet.
Beide eingerichteten Umgebungen laufen einwandfrei.
Ich hab also munter angefangen in der Developement ein Theme anzulegen und die zu ändernden Dateien per
zu erweitern oder Blöcke umzustellen. Das hat auch alles wunderbar funktioniert.
Das Problem
Um Änderungen jetzt für das Staging zu übergeben benutze ich Git (Feature-Branch-Workflow) Auch das hat über das Remote-Repsoitory funktioniert.
Ich hab das Theme dann über bin/console installiert, aktiviert und registriert und konnte es im Backend dem entsprechenden Verkaufskanal zu weisen.
Das Ergebnis von Dev zu Staging in zwei Bildern im Vergleich:
Wenn ich jetzt in der Produktivumgebung, die den Fehler “Leider ist etwas schief gelaufen” wirft, in der .env-Datei mittels APP_ENV=prod in den dev-Modus gehe (APP_ENV=dev), laden die Änderungen aus dem Theme wieder ohne Probleme richtig.
Fragen:
Woran liegt das und wie kann man das vermeiden / umgehen?
die Fehlermeldung, die wohl den Bereich des Warenkorbs im Header betrifft:
[2020-02-03 22:28:20] request.CRITICAL: Uncaught PHP Exception Twig\Error\RuntimeError: "An exception has been thrown during the rendering of a template ("Failed to create "/var/www/vhosts/meine-domain.de/shopware/var/cache/prod_h1b7726e6c95d19c88e11911bd4fd5a17/translations": mkdir(): Permission denied.")." at /var/www/vhosts/meine-domain.de/shopware/vendor/shopware/storefront/Resources/views/storefront/layout/header/actions/cart-widget.html.twig line 9 {"exception":"[object] (Twig\\Error\\RuntimeError(code: 0): An exception has been thrown during the rendering of a template (\"Failed to create \"/var/www/vhosts/meine-domain.de/shopware/var/cache/prod_h1b7726e6c95d19c88e11911bd4fd5a17/translations\": mkdir(): Permission denied.\"). at /var/www/vhosts/meine-domain.de/shopware/vendor/shopware/storefront/Resources/views/storefront/layout/header/actions/cart-widget.html.twig:9, Symfony\\Component\\Filesystem\\Exception\\IOException(code: 0): Failed to create \"/var/www/vhosts/meine-domain.de/shopware/var/cache/prod_h1b7726e6c95d19c88e11911bd4fd5a17/translations\": mkdir(): Permission denied. at /var/www/vhosts/meine-domain.de/shopware/vendor/symfony/filesystem/Filesystem.php:105)"} []
In der cart-widget.html.twig habe ich folgende Anpassungen vorgenommen:
{% sw_extends '@Storefront/storefront/layout/header/actions/cart-widget.html.twig' %}
{# *****************************************************
Schaltet den Preis beim Warenkorbsymbol im Header aus
********************************************************* #}
{% block layout_header_actions_cart_widget %}
{% if context.customer == null %}
Preis erst nach Login
{% else %}
{{ page.cart.price.positionPrice|currency }}{{ "general.star"|trans|sw_sanitize }}
{% endif %}
{% endblock %}
Danach und davor stehen jede Menge dieser Einträge:
[2020-02-03 22:28:20] cache.WARNING: Failed to save key "f59f42536997e99482e3408073e0aa1e" of type Shopware\Core\System\Language\LanguageCollection: file_put_contents(/var/www/vhosts/meine-domain.de/shopware/var/cache/prod_h1b7726e6c95d19c88e11911bd4fd5a17/pools/f5mi57D4rH/5e389e845c7dc8.59293677): failed to open stream: Permission denied {"key":"f59f42536997e99482e3408073e0aa1e","exception":"[object] (ErrorException(code: 0): file_put_contents(/var/www/vhosts/meine-domain.de/shopware/var/cache/prod_h1b7726e6c95d19c88e11911bd4fd5a17/pools/f5mi57D4rH/5e389e845c7dc8.59293677): failed to open stream: Permission denied at /var/www/vhosts/meine-domain.de/shopware/vendor/symfony/cache/Traits/FilesystemCommonTrait.php:96)"} []
Ich würde gerne diese Frage nochmal hervor holen, da mir der Workflow auch noch nicht ganz klar ist. Vor allem nicht nach bisher eher mäßigen Erfolgen um in lokaler Dev Umgebung entwickelte Theme-Plugins bzw normale Plugins auf eine Shopware (Prod/Stage) Instanz zu bringen. Entweder gibt es solch Fehler wie bei heinel oder es werden bei neuen Plugins nicht die nötigen JS kompiliert.
Offensichtlich reicht es nicht nur Plugins unter custom/plugins abzulegen und diese im Admin zu installieren/updaten. Müssen zwangsweise Scripte und Cache-Bereinigungen manuell ausgeführt werden? Immerhin ist das oft nur eingeschränkt möglich, wenn auf dem System kein node verfügbar ist.
Oder, um jetzt endlich die Frage von heinel wieder aufzugreifen, wird es in Dev/Production-Template alles kompiliert und kopiert und dann kopiert man am Ende nur noch Plugins und public auf den Prod-Server? Oder gleich das ganze (geforkte) Production-Template mit allen Anpassungen per git clone/pull auf den Server?
Wäre toll, wenn jemand das mal kurz skizzieren könnte.