Ausführen von unit-tests in Jenkins / Hudson automatisiert von dev zu build-server

Sind wir derzeit mit einem Jenkins (Hudson) CI-server zu bauen und Verpacken unsere .net-web-Projekten und Datenbank-Projekte. Alles funktioniert Super, aber ich wollen, starten Sie das schreiben von unit-tests und auch nur dann, vorbei am bauen, wenn die unit-tests übergeben. Wir sind mit dem eingebauten msbuild-task zum erstellen des web-Projekts. Mit den folgenden Argumenten ...

MsBuild Version           .NET 4.0
MsBuild Build File    ./WebProjectFolder/WebProject.csproj  
Command Line Arguments    ./target:Rebuild /p:Configuration=Release;DeployOnBuild=True;PackageLocation=".\obj\Release\WebProject.zip";PackageAsSingleFile=True

Müssen wir führen automatisierte tests über unseren code, der automatisch ausgeführt wird, wenn wir bauen auf unsere Maschinen (post-build-Ereignis möglicherweise) aber auch ausgeführt, wenn Jenkins nicht einen build für das Projekt.

Wenn man es so nicht bauen, die unit-tests Projekt, weil das web-Projekt kein Verweis auf den test-Projekt. Das test-Projekt wäre, verweisen auf das web-Projekt, aber ich bin mir ziemlich sicher, dass wäre Schlachten unsere automatisierte builds, wie Sie existieren in Erster Linie zu bauen und Verpacken unsere Implementierungen. Laufen diese tests sollten ein Schritt in diese automatisierten build-und Paket Prozess.

Optionen ...

  1. Erstellen Sie zwei Jenkins-jobs. eine zum ausführen des tests ... wenn die tests passieren eine weitere build ausgelöst wird, die baut und Paketen, die ein web-Projekt. Setzen Sie den post-build-event auf dem test-Projekt.
  2. Bauen die Lösung, anstatt des Projektes (stellen Sie sicher, dass die Lösung enthält die erforderlichen tests) und post-build-Ereignisse auf jedem test-Projekte, die ausgeführt würde, das nunit-console zum ausführen der tests. Dann verwenden Sie die Befehlszeile zum kopieren aller benötigten Dateien aus jedem der Behälter und Inhalts-Verzeichnisse in ein Paket.
  3. Bauen die nur-test-Projekt in jenkins statt des web-Projekts in jenkins. Das test-Projekt wäre, verweisen auf das web-Projekt (je nachdem, was Sie testen wollen), und bauen Sie es.

Probleme ...

  1. Es gibt zwei jobs, und nicht nur eine. Zwei Dinge zum Debuggen nicht ein. Um zu sehen, ob die tests bestanden und eine zum erstellen und kompilieren Sie das Webprojekt. Die tests passieren könnte, aber der build fehlschlagen konnte, wenn Ihr etwas nicht, die verwendet wird durch das, was Sie testen wollen ...
  2. Dies erfordert, dass wir genau wissen, was geht in den Bau. Jetzt msbuild macht alles für uns. Wenn Sie mehrere teams an einem Projekt arbeiten, jedesmal ein extra Ordner erstellt wird, Sie haben zu sorgen über den möglicherweise spröde Befehlszeile-Anweisungen.
  3. Dies scheint eine Korruption von unser Hauptziel hier. Die tests sollte ein Schritt in diesem Prozess nicht das vordringlichste wichtigste in diesem Prozess. Ich bin auch nicht 100% sicher, dass ein ausgelöster build ist die gleiche wie eine normale build kann es alles tun, die gleichen Dinge als normal zu bauen. Verschieben Sie alle die richtigen Dateien auf die gleiche Weise verschieben Sie Sie alle in den gleichen Verzeichnissen usw.

Erste problem.

Wollen wir laufen unsere tests, wenn unser Haupt-Projekt erstellt wird. Aber das hinzufügen einer post-build-Ereignis für das web-Projekt, das läuft gegen den test Projekt funktioniert nicht, da das web-Projekt kein Verweis auf das test-Projekt und wird nicht ausgelöst, einen build des Projekts. Ich könnte weitermachen ... aber das ist genug ...

Verbrachten wir über eine Woche versucht diese Arbeit zu machen, schön aber noch nicht gelungen. Fühlen Sie sich frei zu Bearbeiten, wenn Sie das Gefühl bekommen können, eine bessere Antwort ...

InformationsquelleAutor Kevin Donde | 2012-10-24
Schreibe einen Kommentar