Einrichten eines Deployment / Build / CI-Zyklus für PHP-Projekte

Die meiste Zeit arbeite ich als Einzelentwickler an einer Reihe von großen, hauptsächlich PHP-basierten Projekten. Ich möchte den Umgang mit Änderungen an der Codebasis professionalisieren und automatisieren und einen kontinuierlichen Integrationsprozess erstellen, der den Übergang zur Arbeit in einem Team ermöglicht, ohne grundlegende Änderungen vornehmen zu müssen.

Was ich gerade mache, ist, dass ich für jedes Projekt eine lokale Testumgebung habe. Ich benutze SVN für jedes Projekt; Änderungen werden lokal getestet und dann in der Regel über FTP in die Online-Version übertragen. Die API-Dokumentation wird manuell aus dem Quellcode generiert. Unit-Tests beschäftigen mich langsam und gehören noch nicht zu meinem Tagesablauf.

Der "Build-Zyklus", den ich mir vorstelle, würde Folgendes tun:

Ein Änderungssatz wird nach einem lokalen Test in SVN eingecheckt.

Ich starte den Build-Prozess. Die SVN HEAD-Revision wird ausgecheckt, bei Bedarf geändert und für den Upload vorbereitet.

Die API-Dokumentation wird automatisch generiert - wenn ich sie noch nicht im Detail eingerichtet habe, scanne ich mithilfe einer Standardvorlage die gesamte Codebasis.

Die neue Version wird per FTP auf dem Remote-Standort bereitgestellt (einschließlich Verzeichnisumbenennung, Chmodding, Importieren von Datenbanken usw.). Dies gefällt mir bereitsphing für sehr viel, aber ich bin natürlich offen für Alternativen.

Unit-Tests, die sich an einem vordefinierten Ort befinden, werden ausgeführt. Ich werde per E-Mail, RSS oder (vorzugsweise) HTML-Ausgabe, die ich abrufen und in eine Webseite einfügen kann, über deren Misserfolg oder Erfolg informiert.

(Optional) Eine Endbenutzer-Textdatei "Changelog" an einem vordefinierten Ort wird mit einem vordefinierten Teil der Festschreibungsnachricht aktualisiert ("Es ist jetzt möglich, nach" foo "und" bar "gleichzeitig zu filtern Diese Nachricht ist nicht unbedingt mit der SVN-Festschreibungsnachricht identisch, die wahrscheinlich viel mehr interne Informationen enthält.

Sachen wie Code-Metriken, Code-Style-Checks und so weiter sind momentan nicht mein Hauptaugenmerk, aber auf lange Sicht werden sie es auf jeden Fall tun. Lösungen, die dies sofort möglich machen, werden sehr positiv aufgenommen.

ich suche nach

Feedback und Erfahrungen von Menschen, die sich in einer ähnlichen Situation befinden oder befanden und eine Lösung dafür erfolgreich umgesetzt haben

Insbesondere,gute schrittweise Anleitungen und exemplarische Vorgehensweisen wie man das einrichtet

Lösungen, die bietenso viel Automatisierung wie möglichB. durch Erstellen einer Skeleton-API, von Testfällen usw. für jedes neue Projekt.

und auch

Produktempfehlungen. Was ich bisher weiß, istphingAmeise zum Bauen undphpUnderControl oderHudson für den Berichtsteil. Ich mag sie alle, soweit ich sehen kann, aber ich habe natürlich keine detaillierten Erfahrungen mit ihnen.

ich binüberflutet Mit der Arbeit habe ich eine starke Neigung zu einfachen Lösungen. Wenn andererseits ein Feature fehlt, weine ich, dass es zu begrenzt ist. :) Point-and-Click-Lösungen sind ebenfalls willkommen. Ich gehe auch auf kommerzielle Produktempfehlungen ein, die mit PHP-Projekten funktionieren können.

Mein Setup

Ich arbeite lokal unter Windows (7, um genau zu sein) und die meisten Client-Projekte werden auf einem LAMP-Stack ausgeführt, häufig auf gemeinsam genutztem Hosting (= kein Remote-SSH). Ich suche nach Lösungen, die ich in meiner eigenen Umgebung ausführen kann. Ich bin bereit, eine Linux-VM dafür einzurichten, kein Problem. Gehostete Lösungen sind für mich nur dann interessant, wenn sie alle beschriebenen Aspekte bieten oder flexibel genug sind, um mit den anderen Teilen des Prozesses zu interagieren.

Kopfgeld Ich akzeptiere die Antwort, von der ich glaube, dass sie mir die meisten Kilometer einbringt. Ich wünschte, ich könnte mehr als eine Antwort akzeptieren. Vielen Dank an alle!

Antworten auf die Frage(9)

Ihre Antwort auf die Frage