Ich bin die meiste Zeit ein Einzelentwickler und arbeite an einer Reihe großer, hauptsächlich PHP-basierter Projekte. 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 dass grundlegende Änderungen vorgenommen werden 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 per FTP in die Online-Version übertragen. Die API-Dokumentation wird manuell aus dem Quellcode generiert. Unit-Tests sind etwas, auf das ich mich langsam einlasse, und es ist noch nicht Teil meiner täglichen Routine.
Der "Build-Zyklus", den ich mir vorstelle, würde Folgendes bewirken:
Ein Änderungssatz wird in SVN eingecheckt, nachdem er lokal getestet wurde.
Ich starte den Build-Prozess. Die SVN HEAD-Revision wird ausgecheckt, bei Bedarf geändert und zum Hochladen 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 über FTP am Remotestandort bereitgestellt (einschließlich einiger Umbenennungen von Verzeichnissen, Chmodding, Importieren von Datenbanken und dergleichen). Dies ist etwas, das ich bereits sehr mag , aber ich bin natürlich offen für Alternativen.
Unit-Tests an einem vordefinierten Ort werden ausgeführt. Ich werde über 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 Speicherort wird mit einem vordefinierten Teil der Festschreibungsnachricht aktualisiert ("Es ist jetzt möglich, gleichzeitig nach" foo "und" bar "zu filtern Zeit). Diese Nachricht ist nicht unbedingt identisch mit der SVN-Festschreibungsnachricht, die wahrscheinlich viel mehr interne Informationen enthält.
Dinge wie Codemetriken, Überprüfung des Codestils usw. sind momentan nicht mein Hauptaugenmerk, aber auf lange Sicht werden sie es sicherlich. Lösungen, die dies sofort einsatzbereit machen, werden sehr freundlich geprüft.
ich suche nach
Feedback und Erfahrungen von Menschen, die sich in einer ähnlichen Situation befinden oder befanden und eine Lösung dafür erfolgreich implementiert haben
Insbesondere gute Schritt-für-Schritt-Anleitungen und Anleitungen zum Einrichten
Lösungen, die so viel Automatisierung wie möglich bieten , z. B. durch Erstellen einer Skelett-API, von Testfällen usw. für jedes neue Projekt.
und auch
- Produktempfehlungen . Was ich bisher weiß, ist Phing / Ant für das Bauen und PhpUnderControl oder Hudson für den Berichtsteil. Ich mag sie alle, soweit ich sehen kann, aber ich habe natürlich keine detaillierten Erfahrungen mit ihnen.
Ich bin mit Arbeit überfüllt , daher neige ich stark zu einfachen Lösungen. Wenn andererseits eine Funktion fehlt, werde ich darüber weinen, dass sie zu begrenzt ist. :) Point-and-Click-Lösungen sind ebenfalls willkommen. Ich bin auch auf kommerzielle Produktempfehlungen, die mit PHP-Projekten arbeiten 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 Shared 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 bringt. Hier gibt es viele hervorragende Beiträge. Ich wünschte, ich könnte mehr als eine Antwort akzeptieren. Vielen Dank an alle!