2016-04-06 11 views
1

Ich habe einen Jenkins-Server (unter Windows) zum Testen einer Symfony-App, die gut lief. Kürzlich musste ich PHP von 5,6 auf 5,5 herunterstufen, damit es unserer Implementierungsumgebung entspricht (weiß nicht, warum 5.6 überhaupt installiert wurde).Jenkins nicht fertig PHPUnit suite

Danach ist meine PHPUnit Testsuite nicht mehr abgeschlossen. PHPUnit wird über eine Phing-Exec-Task ausgeführt. Wenn ich dieselbe Aufgabe über die Befehlszeile ausfühle, wird die Testsuite beendet. Wenn ich den phpunit Befehl (bin/phpunit -c phpunit.xml) ausführe, wird die Testsuite vervollständigt. Das führt mich zu der Annahme, dass das Problem irgendwo in Jenkins liegt, was bis zum PHP-Downgrade gut lief.

Alle anderen Aufgaben laufen gut (phpcs, phpcpd, usw.). Sein nur PHPUnit und nur während eines Jekins Build. Die Suite stoppt einfach die Ausführung (ich kann keine Fehler angezeigt werden) und Phing ruft die nächste Aufgabe. Der Build wird nicht einmal als fehlgeschlagen markiert, da keine Antwort von PHPUnit kommt - es scheitert, weil wenn Jenkins versucht, die phpunit-Testergebnisse zu verarbeiten, es keine gibt.

Irgendwelche Vorschläge, was ich vermisse oder wie ich einen Fehler anzeigen lassen könnte?

+0

Have Sie konnten in dieser Angelegenheit Fortschritte erzielen? Ich habe die gleiche Sache, PHP 5.6 ausgeführt. Ich habe den Auftrag nach einem Zeitplan ausgeführt. Wenn Jenkins es zum geplanten Zeitpunkt ausführt, scheint es, dass PHPUnit immer nicht abgeschlossen wird, also werden die Junit-Protokolle usw. nicht erstellt, aber wenn ich den Job manuell ausführe, beendet PHPUnit das Ausführen und erstellt alle Protokolle und Abdeckungsberichte. Das führt mich zu der Annahme, dass es sich um ein Speicherproblem oder ähnliches handelt, aber ich habe keine Fehler in den Logs, daher kann ich es nicht sagen. –

Antwort

0

Ich bin nicht sicher über den in phpunit Aufgabe gebaut, aber wenn Sie die exec Aufgabe verwenden, können Sie erfassen (und später Echo) die Ausgabe des Befehls und haben auch die Build bei einem Fehler beenden:

<exec 
    command="/usr/local/php56/bin/php vendor/phpunit/phpunit/phpunit" 
    checkreturn="true" 
    outputProperty="phpunitOut" /> 
<echo msg="PHPUnit Result: ${phpunitOut}" />