11 Stimmen

PHP-Build-System

Ich verwende PHPUnderControl, das auf Cruise Control aufsetzt, für meine kontinuierliche Integration und Einheitstests. Ich habe es auch eingerichtet, um PHPDocumentor auszuführen und PHPDoc's für mich zu generieren, sowie PHP Code Sniffer zur Durchsetzung von Codierungsstandards. Aber jetzt möchte ich etwas auf demselben Server (Ubuntu) einrichten, um das Bereitstellen auf einem Remote-Server zu erleichtern. Ich habe es bereits so eingerichtet, dass nach jedem erfolgreichen Build ein SVN Export von trunk in ein Verzeichnis innerhalb des Projektordners auf dem Server durchgeführt wird.

Ich habe darüber nachgedacht, ein kleines benutzerdefiniertes PHP-Skript zu schreiben, das eine SSH-Verbindung zu einem konfigurierten Remote-Server herstellt, das neueste Exportpaket erstellt, es kopiert, entpackt und alle Migrationen ausführt. Ein PHP-Skript wie dieses sollte anfangs nicht zu schwierig sein, es sei denn, ich müsste letztendlich auf mehrere Server skalieren. Ich weiß, dass es Systeme wie Phing, Fabric und andere gibt.

Meine Frage ist, ob jemand Erfahrung damit hat und einige Vor- und Nachteile nennen kann? Ich habe bereits begonnen, Phing auf meinem Server einzurichten und werde als nächstes mit Fabric herumspielen, um sie auszuprobieren, aber ich frage mich, ob jemand, der sie umfangreicher verwendet hat oder sie skalieren musste, ein Feedback geben könnte.

8voto

jwpage Punkte 546

Ich habe Capistrano mit PHP verwendet (obwohl es eher eine Sache von Rails ist, da es in Ruby geschrieben ist).

Es war wirklich einfach zu verwenden, aber trotzdem musste ich nicht viel damit skalieren. Wir deployen jedoch auf verschiedene Staging-/Produktionsserver, und die Multi-Stage-Erweiterung war in diesen Szenarien nützlich.

Wie bei den meisten Ruby-Dingen gibt es viele Hooks und "Magie", die verwirrend werden können, wenn man neu in Capistrano ist und versucht, etwas Kniffliges damit zu tun.

Was den Vergleich zu anderen Deployment-Tools betrifft, kann ich nichts sagen. Ich weiß, dass wir früher Phing verwendet haben, aber ich bin mir nicht sicher, warum wir zu Capistrano gewechselt sind.

2voto

NSSec Punkte 4271

Wenn Ihnen Capistrano gefällt, aber Sie sich gewünscht haben, dass es ein wenig mehr PHP-mäßig ist, schauen Sie sich Fredistrano an.

Ich habe einmal ein automatisiertes Build (SVN-Export, Zend Guard-Encoding usw.) und Bereitstellungssystem mit Phing geschrieben und fand es ziemlich mühsam zu verwenden. Immer wenn ich eine spezielle Aufgabe schreiben musste, hatte ich das Gefühl, ich müsse viele Hürden überspringen, um es zum Laufen zu bringen.

Also schreibe ich heutzutage einfach einfache Bash-Skripte, die das Bauen mit SVN-Checkout, Encoding, das Erstellen eines Tags in SVN und die Bereitstellung über rsync durchführen. Es mag weniger technisch sein, und Phing mag über einige überlegene Funktionen verfügen, aber zumindest hindert es mich nicht daran.

2voto

Ascherer Punkte 8044

Es gibt ein neues Build-Tool namens Bldr. Es verwendet Yaml für die Konfiguration anstelle von XML wie die meisten anderen Build-Systeme und es ist hochgradig erweiterbar.

http://bldr.io

1voto

Brian Punkte 3511

Wir verwenden Phing und es hat sich als nützlich erwiesen. Wir verwenden es nicht für Verpackungen, aber es sollte nicht allzu schwer sein, es dazu zu bringen, das zu tun, wonach Sie suchen. Wir verwenden es hauptsächlich für gängige Aufgaben wie das Löschen von Caches, das Erstellen von Entwicklungsumgebungen und andere Aufgaben zur Unterstützung der Entwicklung. Es hat uns sehr geholfen und soweit ich das beurteilen kann, scheint es ein Klon von Ant zu sein, obwohl es möglicherweise nicht alle Funktionen hat, die Ant hat.

0voto

code_burgar Punkte 11551

Wenn ich ein solches Bereitstellungssystem implementieren würde, würde ich wahrscheinlich eine etwas andere Lösung wählen als die, die Sie oben skizziert haben. Anstatt Code zu haben, der lokal auf meinem System läuft, eine Liste von Remote-Servern verbindet und dort die "Arbeit" erledigt, würde ich das Updater-Modul mit dem restlichen Code packen und es auf Abruf von meinem Server die Aktualisierungsdaten abrufen lassen (oder genauer gesagt, wenn ich es "gesagt" habe). Auf diese Weise müssen Sie sich viel weniger Sorgen machen (Sie müssen nur den aktualisierten Code über http bereitstellen, wenn angefordert, und der Remote-Server erledigt den Rest). Nur meine 2 Cent.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X