Phing und Composer, wie herum?

Lesezeit: 4 Minuten

Ich möchte sowohl Phing als auch Composer für meine Anwendungen verwenden. Phing als Build-System und Composer zum Verwalten von Abhängigkeiten. Aber wie herum sollten sie verwendet werden?

Derzeit installieren wir Phing global auf allen Servern. Phing soll den Build unserer verschiedenen Projekte vollständig automatisieren. Checken Sie einfach eine Kopie des Projekts aus, führen Sie Phing mit dem Standardziel aus und Sie sollten damit fertig sein. Dies impliziert auch, dass dort ein Phing-Ziel vorhanden sein sollte, das Composer auffordert, alle Abhängigkeiten zu installieren. Also, Phing ruft den Komponisten an. Aber zu dieser Einstellung habe ich nichts gefunden. Es gibt keine ComposerTask oder ähnliches und googeln zeigt niemanden, der so arbeitet.

Aber ich sehe vieles andersherum. Personen, die Composer verwenden, um Phing als Projektabhängigkeit zu installieren.

Was sind also die (Nach-)Vorteile der einzelnen Methoden? Versuche ich es falsch zu machen?

  • FYI: Ich hatte die gleiche Frage. Es erscheint mir viel sinnvoller, das Abhängigkeitsmanagement (Composer) vom Build-Tool (Phing) aufrufen zu lassen als umgekehrt. Es sieht so aus, als hätten sie eine ComposerTask zu Phing hinzugefügt, seit Sie dies gefragt haben: phing.info/docs/guide/stable/chapters/appendixes/…

    – takteek

    28. Januar 2013 um 8:28 Uhr

  • Link zu ComposerTask oben ist defekt, hier ist ein funktionierender Link phing.info/docs/guide/trunk/ComposerTask.html

    – Lester Peabody

    1. März 2017 um 20:23 Uhr

Ich denke, der Hauptvorteil der Installation von Phing über Composer besteht darin, dass es für Open-Source-Projekte einfacher ist, sicherzustellen, dass Ihre Benutzer Phing auf diese Weise installiert haben. Typischerweise ist Phing in diesen Setups nur ein Tool, das von einigen Bibliotheken verwendet wird, um bestimmte Aufgaben zu erledigen.

Der andere Vorteil ist, dass jedes Projekt eine andere Version von Phing verwenden kann, was Sie nicht tun können, wenn Sie eine systemweite Version haben.

Wenn Sie Phing verwenden, um Ihren gesamten Projektaufbau/-aufbau zu verwalten, kann es sinnvoll sein, Composer von dort aus aufzurufen, aber auch umgekehrt. Zum Beispiel könnten Sie Composer verwenden Skripte um die Phing-Aufgaben nach jedem Abhängigkeitsupdate abzufeuern. Auf diese Weise wäre ein Projektaufbau:

  • Kasse
  • Komponist ausführen
  • Composer führt Phing nach dem Aktualisieren/Installieren von deps aus
  • Projekt wird gebaut

Ich weiß ehrlich gesagt nicht, ob es eine richtige Antwort gibt. Sie können beide Wege zum Laufen bringen, aber wenn Sie es auf diese Weise tun, überspringen Sie zumindest die Notwendigkeit, zuerst Phing zu installieren. Natürlich müssen Sie stattdessen Composer installieren, aber das ist wohl einfacher und Sie würden es sowieso brauchen.

  • Ich bin auf ein Problem gestoßen, von dem ich glaube, dass es als Github-Problem dokumentiert ist (kann es im Moment nicht finden). Nach der Installation von Phing als Composer-Entwicklerabhängigkeit kollidierte die Phing-Klassenkarte teilweise mit der Klassenkarte aus der Datei „composer.json“. in der App. Hat mich erstmal abgeschreckt.

    – Paul Redmond

    22. April 2014 um 21:17 Uhr


  • Der Entwickler muss sicherstellen, dass er über alle erforderlichen Entwicklungs-/Build-Tools verfügt. Ihre Antwort ist, als würde man sagen, dass ein C++-Repository Logik enthalten sollte, um einen gcc-Compiler zu installieren (“composer installs phing”). Das Code-Repository sollte nur aus dem eigentlichen Code und dem Build-Plan bestehen. Was bedeutet, Phing zuerst, Composer wird von Phing aufgerufen. Außerdem haben Sie hier das Henne-Ei-Problem – Composer kann Phing installieren, aber was ist, wenn jemand Composer noch nicht installiert hat? Sehen Sie, deshalb habe ich gesagt, dass Entwicklertools/Binärdateien in der Verantwortung des Entwicklers liegen, wenn er sein Betriebssystem installiert.

    – Foo-Bar

    11. Februar 2017 um 10:53 Uhr

Weitere Gedanken zu diesem Thema.

Generell hat Seldaek Recht, dass beides möglich ist. Es gibt jedoch auch Argumente dafür, zuerst zu phingen. Auf der Ebene der Build-Architektur halte ich Composer First für nicht sinnvoll. Der Erstellungsprozess hat einen größeren Umfang und eine längere Lebensdauer und sollte daher den Abhängigkeitsmanager verwalten, nicht umgekehrt.

Wenn Sie außerdem mit Phing-Token-Ersetzung arbeiten, um zu bestimmen, welche Abhängigkeitsversionen Sie in welcher Umgebung installieren möchten, ist es nahezu unmöglich, zuerst Composer zu verwenden, da Phing die Datei „composer.json“ generiert und daher installiert werden muss, bevor Composer ausgeführt werden kann.

  • Dies sollte die richtige Antwort sein. Ein ganzer Build enthält diese Schritte (von denen einige optional sein können): Auschecken, Installieren von Paketen, Testen/Validieren, Kompilieren, Bereitstellen. Dies wird normalerweise von einem CI-Butler wie Jenkins verwaltet. Jenkins führt den Checkout durch und ruft dann eine Art Build-Anweisungen auf, die im Code-Repository enthalten sind (so dass ein Projekt-Repository vollständig in sich geschlossen ist und alle erforderlichen Build-Informationen enthält). Dies wäre idealerweise ein Phing-Ziel (zB build.xml). Dann kümmert sich Phing um den Aufruf von Composer, die Bereinigung und schließlich das Deployment (z. B. über ssh/rsync).

    – Foo-Bar

    11. Februar 2017 um 10:39 Uhr


1159300cookie-checkPhing und Composer, wie herum?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy