2008-12-01 13 views
8

Ich bin auf der Suche nach einer kompletten Lösung für ein automatisiertes "Bauen" und Testen von PHP-Anwendungen. Ich stieß auf PhpUnderControl, eine Lösung zur Ausführung automatisierter Anwendungs-Builds, die im Umfeld von Cruise Control erstellt wurden.Cruise Control und PHP-Projekte

Leider ist PhpUC noch in den frühen Stadien der Entwicklung und ich kann es nicht auf Windows-Box arbeiten.

Nach einigen Stunden des Versuchs gab ich phpUc auf. Ich versuche jetzt, Cruise Control allein zu verwenden. Es funktioniert gut, wenn es um den gesamten Build-Prozess geht. Jeder Befehl, den ich in die Build-Datei von Ameisen lege, läuft gut.

Das einzige Problem, das ich habe, ist, dass Cruise Control Protokolle von Run-Builds nicht in Projektprotokolldatei zusammenführt, daher kann ich keine Build-Ergebnisse sehen. Das Beispielprojekt in Cruise Control funktioniert jedoch einwandfrei. Protokolle für Builds werden in das Projektprotokoll übernommen.

Ich frage mich, ob Cruise Control Protokolle von PHPUnit (im XML-Format) in das Projektprotokoll einbinden kann oder ob es nur für Java-JUnit-Dateien funktioniert. Hat jemand versucht, Cruise Control allein in einem PHP-Projekt zu verwenden?

hier ist der Log-Abschnitt der Projektkonfiguration (config.xml):

<log dir="logs/${project.name}"> 
<merge dir="projects/${project.name}/build/logs/"/> 
</log> 

Dies ist kopier geklebt + Pfade von Cruise Control Beispielprojekt geändert.

Irgendwelche Gedanken jemand bitte.

Dank

Antwort

2

Ich frage mich, ob Cruise Control der Lage ist, Protokolle von PHPUnit (im XML-Format) in die Projektprotokoll erstellt zu fusionieren oder ist es für Java JUnit-Dateien arbeiten nur .

CC wird jede XML-Datei zusammenführen, auf die Sie es richten. Wenn Sie sagen, dass das Zusammenführen der Dateien nicht funktioniert, erhalten Sie einen Fehler beim Zusammenführen der Dateien oder werden die Testergebnisse nicht auf der Ergebnisseite angezeigt? Wenn Sie sich die Build-Protokolldatei ansehen, sehen Sie, dass die Testergebnisse zusammengeführt wurden?

Ein Problem, das Sie möglicherweise sehen, ist, dass die .xsl-Dateien in der JSP-Reporting-Anwendung erwarten, dass die Testergebnisse in der Struktur sind, die die ant junit-Aufgabe erstellt. Was passiert, ist, dass Sie die Dateien zusammenführen, aber die .xsl nicht weiß, wie die Ergebnisse angezeigt werden sollen.

Aber ich denke, es gibt eine einfache Lösung. Das PhpUnderControl-Projekt liefert eine phpunit.jsp. Ich denke, wenn Sie dies Ihrer bestehenden CC-Installation hinzufügen, können Sie die Testergebnisse anzeigen. Sie können die phpunit.jsp ziemlich einfach zu den Tabs hinzufügen; schau einfach auf main.jsp und es sollte offensichtlich sein.

Wenn Sie weitere Fragen haben, empfehle ich die CruiseControl users mailing list.

(Ich habe nicht CC auf einem PHP-Projekt verwendet, aber ich bin eine des CC-Committer.)

+0

Vielen Dank, dass Sie sich Zeit nehmen, um meine Frage zu beantworten, Was ich mit "Zusammenführen funktioniert nicht" bedeutet, dass keine Protokolldateien im Verzeichnis cc/logs/project nach dem ersten Build erstellt werden. Ich begann über und erstellte neue config.xml-Datei und ich habe es zum Funktionieren gebracht. Ich nehme an, ich habe die Konfigurationsdatei in irgendeiner Weise durcheinander gebracht. – CountZero

0

Ich habe festgestellt, dass CruiseControl- nur die Protokolle fusioniert Ergebnisse mit Test, wenn ein Test fehlschlägt.

Wenn ich einen Test absichtlich abgebrochen habe, wurden die Ergebnisse in das Protokoll übernommen und auf dem CruiseControl-Dashboard angezeigt.

Könnte das Ihr Problem sein?

0

Wir haben versucht PHPUC mit CC zu verwenden und wir konnten das Zeug nicht richtig funktionieren. Wir experimentierten mit heterogenem CC, fanden es aber schwierig, Authentifizierung dorthin zu bekommen (wir sind verteilt, also wären unsere Berichte für die Welt offen, wenn wir es nicht festnagelten - wir konnten es nicht herausfinden.)

So Wir verwenden jetzt Hudson als unsere CI-Engine und Phing als unser Build-Tool. Es funktioniert gut. Wir haben Code-Coverage-Berichte, die direkt aus PHPUnit kommen (was Hudson immer noch "Clover-Coverage" von der Java-Welt nennt, aber hey, es ist nur ein Name eines Links und wir wissen, was es bedeutet).

Hudson war einfach einzurichten und scheint mit allem zu funktionieren, was Sie für PHP benötigen.

+0

Seit ich das gepostet habe, haben wir PHPuc tatsächlich mit Cruise Control arbeiten lassen und es ist alles sehr flüssig. Ich bin nicht der Typ, der es getan hat, aber anscheinend kann es gemacht werden. Wir verfügen über Code-Coverage-Berichte mit PHPUnit, PMD, CodeSniffer und Metrik-Charts. Also gibt es Hoffnung. –

1

phpunit, phpUnderControl und CC funktionieren super!

Für die Tests in der Registerkarte (phpUnderControl mit CC) immer in der phpunit XML-Datei sicherzustellen, dass die phpunit Protokolldatei in dem richtigen Pfad erzeugte

<log type="junit" target="...../cruisecontrol-bin-2.8.4/projects/<projname>/build/logs/logfile.xml" logIncompleteSkipped="false"/> 

Sobald die logfile.xml von phpunit Tests erzeugt werden werden in der Registerkarte Tests von phpUnderControl und CC angezeigt.