Composer Workflow mit VCS

Hi zusammen,

ich blicke leider nach einigen Chats und Diskussionen mit mehreren Entwicklern (SW intern und extern) immer noch nicht durch.

 

Laut vieler Aussagen soll das production template für die Entwicklung eigener Plugins genutzt werden. Dort haben wir Plugins mit dem type : vcs eingebunden.

Das funktioniert auch gut, wenn wir einen neuen APP Server zuschalten - einfach composer install --no-dev und fertig. Wir pflegen unsere Shops mit branches in denen dann unterschiedliche composer. json und composer. locks existieren. Jetzt möchten wir auf diesem Setup gerne lokal entwickeln, das geht mit den Daten vom Demostore (also development template) nur bedingt und wird von SW auch nicht empfohlen.

Hier stossen wir auf folgendes Problem - eventuell auch gar kein Problem, sondern einfach Unwissen. Hoffe Ihr könnt mich aufklären ;) 

WIr möchten natürlich mit GIT Repos arbeiten um direkt in der IDE zu commiten, taggen, pushen. Wenn wir das Setup mit composer install aufsetzen werden die Plugins logischerweise in vendor/* geschrieben und sind dort fix und ohne den .git Ordner. SW empfiehlt hier den Weg über die static-plugins -> https://github.com/shopware/production#require-project-plugins

Diesen Ordner möchte ich aber logischerweise nicht in mein production template commiten, entferne also daher das ganze über die . gitignore (Grüße gehen raus an Shyim) - dann führe ich ein composer require swic/XXXXX  aus und der vendor Ordner wird mit einem Symlink ersetzt Aufgrund von:

"0": {
            "type": "path",
            "url": "custom/static-plugins/*",
            "options": {
                "symlink": true
            }
        },

damit läuft nun die ganze Sache, aaaaber nun habe ich dieses static-plugin auch in meine composer.lock unter dist stehen.

        {
            "name": "swic/XXXX",
            "version": "1.0.6",
            "source": {
                "type": "git",
                "url": "git@XXXX:frontend/shopware6/plugins/XXXX.git",
                "reference": "6c1172c15da040c1d60f2802085e79dfb0d8a74f"
            },
            "dist": {
                "type": "path",
                "url": "custom/static-plugins/XXXX",
                "reference": "6c1172c15da040c1d60f2802085e79dfb0d8a74f"
            },
            "type": "shopware-platform-plugin",
            "extra": {
                "shopware-plugin-class": "Swic\\XXXX\\XXXX",
                "label": {
                    "de-DE": "Swic XXXX",
                    "en-GB": "Swic XXXX"
                },
                "description": {
                    "de-DE": "Designanpassungen im Produktlisting bezogen auf Kundengruppen",
                    "en-GB": "Design adaption for product listing page related to customer groups"
                }
            },
            "autoload": {
                "psr-4": {
                    "Swic\\XXXX\\": "src/"
                }
            },
            "license": [
                "proprietary"
            ],
            "authors": [
                {
                    "name": "XXXX XXXX GmbH"
                }
            ],
            "description": "Special listing style with 3 products"
        },

Composer schreibt dazu:

Dist:  The dist is a packaged version of the package data. Usually a released version, usually a stable release.

Source:  The source is used for development. This will usually originate from a source code repository, such as git. You can fetch this when you want to modify the downloaded package.

Packages can supply either of these, or even both. Depending on certain factors, such as user-supplied options and stability of the package, one will be preferred.

 

Ich habe mich bisher noch nicht getraut das ganze zu commiten und es zu pullen und composer install --no-dev in production / dev auszuführen.

Hier wäre ich über einen detaillierten Workflow sehr dankbar - oder gibt es den einfach nicht und man muss einfach nach der Entwicklung ein git reset --hard && composer install machen und sich die getaggten Versionen ziehen.

Jemand eventuell noch Feedback? Leider kann man so aktuell nicht sauber mit composer entwickeln, zmd. nicht im production template. Plugins auf Basis vom Standard zu bauen ist suboptimal…

Hallo,
ich weiss ja nicht, ob das noch aktuell ist, aber auch wir entwickeln unser Projekt-basierten Plugins auf Basis des Production Templates im Ordner „static-plugins“. Diese Plugins sind auch im Repo des jeweiligen Projekts eingecheckt und werden nur für dieses gebaut. Für generische Plugins verwalten wir diese in einem eigenen Repo und bauen sie in einer „Boilerplate“ SW 6 Umgebung. Diese laden wir dann in die jeweiligen Projekte via Composer direkt vom Git Repo zu. Das funktioniert auch im Deployment mit „–no-dev“