Wir betreiben derzeit einen Jenkins (Hudson) CI-Server, um unsere .net-Webprojekte und Datenbankprojekte zu erstellen und zu paketieren. Alles funktioniert gut, aber ich möchte beginnen, Komponententests zu schreiben und dann nur den Build zu übergeben, wenn die Komponententests bestanden werden. Wir verwenden die integrierte msbuild-Aufgabe, um das Webprojekt zu erstellen. Mit folgenden Argumenten ...
%Vor%Wir müssen automatische Tests über unseren Code ausführen, die automatisch ausgeführt werden, wenn wir auf unseren Maschinen aufbauen (Postbuildereignis möglicherweise), aber auch ausgeführt werden, wenn Jenkins einen Build für dieses Projekt erstellt.
Wenn Sie es so ausführen, wird das Unit-Tests-Projekt nicht erstellt, da das Webprojekt nicht auf das Testprojekt verweist. Das Testprojekt würde auf das Webprojekt verweisen, aber ich bin mir ziemlich sicher, dass dies unsere automatisierten Builds abschlachten würde, da sie hauptsächlich dazu dienen, unsere Bereitstellungen zu erstellen und zu paketieren. Das Ausführen dieser Tests sollte ein Schritt in diesem automatisierten Build- und Paketprozess sein.
Wir möchten unsere Tests immer dann durchführen, wenn unser Hauptprojekt gebaut wird. Das Hinzufügen eines Post-Build-Ereignisses zum Webprojekt, das für das Testprojekt ausgeführt wird, funktioniert jedoch nicht, da das Webprojekt nicht auf das Testprojekt verweist und keinen Build dieses Projekts auslöst. Ich könnte weitermachen ... aber das ist genug ...
Wir haben ungefähr eine Woche damit verbracht, diese Arbeit gut zu machen, aber es ist nicht gelungen. Fühlen Sie sich frei, dies zu bearbeiten, wenn Sie glauben, dass Sie eine bessere Antwort bekommen können ...
In Jenkins / Hudson ist es ziemlich in Ordnung, viele Jobs zu haben. einige für die Durchführung kompilierungsgesteuerter Versionskontrolländerungen, einige für das Ausführen von (Einheits-) Tests, die durch erfolgreiche Builds ausgelöst wurden, einige für mehr Tests (Integration), die durch erfolgreiche frühere Tests getriggert wurden, einige für das Deployment, ausgelöst durch erfolgreiche Tests.
Sehen Sie sich Plugins wie Join, Build-Pipeline, parametrisierter Trigger und mehr an, um Ihnen dabei zu helfen.
Dies ermöglicht auch, dass Dinge parallel passieren, indem mehrere Knoten verwendet werden. Der Versuch, alles in einem Job zu stopfen, ist nicht der richtige Weg.
Tags und Links jenkins continuous-integration automated-tests hudson