Wir verwenden derzeit einen einmaligen cc.net-Server für unseren Erstellungsprozess, der sowohl .net (mit msbuild & nant) als auch Java (mit maven und ant) erstellt.
CC.net überwacht die Quellcodeverwaltung und löst einen Remote-Build aus, der auf einem separaten Server ausgeführt wird. CC.net sammelt dann die Ergebnisse.
Wenn wir den Remote-Build ausführen, ist dies normalerweise:
- führt nunit oder junit oder ähnliches mit verspotteten Daten aus
- Optional wird ein DB-Skript ausgeführt, um eine neue Datenbankinstanz zu erstellen oder eine Datenbank von einer bekannten Position wiederherzustellen.
- Läuft mit Selen oder ähnlichem, um die Benutzeroberfläche zu testen
- führt emma oder ncover für die Codeabdeckung aus
- erstellt das System für verschiedene Bereitstellungsumgebungen (Test, Akzeptanz, Produktion)
Möglicherweise werden mehrere Builds gleichzeitig ausgeführt, einige .net- und einige Java-Builds (von verschiedenen Projektteams).
Es ist ziemlich zeitaufwändig, die Remote-Builds zum Laufen zu bringen, wenn wir ein neues Projekt einrichten, und wir sind der Meinung, dass es etwas geben muss, das für Remote-Builds besser geeignet ist als cc.net.
Hat jemand Erfahrung mit Remote-Builds mit kontinuierlichen Integrationssystemen?
Ich möchte eigentlich keine Funktionslisten von CI-Servern. Ich würde mich mehr darüber freuen, wie Sie sie in einer mehrsprachigen Umgebung mit mehreren Servern verwendet haben.
quelle
Wir standen vor einiger Zeit vor dieser Frage und entschieden uns für TeamCity . Wir haben uns nur Hudson, CC und TeamCity angesehen. Die Wahl war einfach zu treffen - TeamCity war schließlich unser Build-Server. Bitte beachten Sie, dass ich kein Profi bin und es meine erste Erfahrung mit Build-Servern zu dieser Zeit war.
Hudson - Ich hatte keine Ahnung, was ich tun und wo ich darüber lesen sollte. Und obwohl ich dort etwas verstehen konnte, war es keine Option - zu viel Arbeit. Ich beschloss, mir CC anzuschauen.
Tempomat - wie Hudson, jedoch etwas anders. Ohne ein Handbuch und jede Menge Hilfe von Google kann dort absolut nichts verstanden werden. Ich habe mir gerade TC angesehen.
TeamCity - TeamCity fühlte sich nach den ersten beiden wie im Himmel. Es ist das am besten verwendbare von diesen drei. Installieren Sie, gehen Sie zum Admin-Bereich, konfigurieren Sie ein Projekt (zeigen Sie, wo sich der SVN befindet, zeigen Sie auf das Erstellen von Dateien, geben Sie die Abdeckung / Komponententests usw. an) und genießen Sie es. Und obwohl ich nicht sagen kann, dass ich nichts googelt habe, waren 95% des Einrichtungsprozesses sehr einfach und klar. Ich kann dieses Tool nur empfehlen. Schau es dir an. Das spart dir viel Nerven und Zeit :)
Ich sollte auch beachten, dass TC nicht kostenlos ist. Obwohl sie eine kostenlose Edition haben, die mit einigen Einschränkungen in kommerziellen Projekten verwendet werden kann (max. Build-Konfigurationen 20) - werfen Sie einen Blick auf ihre Preisseite.
PS Ich höre mich an, als würde ich für TC arbeiten, aber das tue ich wirklich nicht :)
quelle
Wir verwenden CC.NET 1.4.
Wir versuchen auf 1.6 zu aktualisieren ... was für ein Albtraum.
Es ist mächtig ... aber NUR, wenn Sie es richtig verwenden und verstehen, wie alles zusammenpasst. Das ist eine Menge zu verlangen vom gesamten Team. Wir haben 'Buildmaster', die Zugriff auf den Server haben und die Konfigurationen ändern können. Trotzdem wird in Bezug auf ccnet viel gegoogelt, und das ganze Geschäft ist zu einem großen Durcheinander geworden.
Ich persönlich möchte zu TeamCity wechseln.
Ich empfehle Ihnen, sich von ccnet fernzuhalten.
quelle
gute Frage. Wir versuchen derzeit auch herauszufinden, welches Tool am besten zu uns passt. Ich kann Ihnen also nur ein wenig Erfahrung erzählen. Es würde uns aber sehr interessieren, welches CI-System Sie jetzt gewählt haben und aus welchen Gründen. Bitte halten Sie uns auf dem Laufenden.
Ich bin sehr beeindruckt, wie hoch das Niveau Ihres CI ist. Ich muss zugeben, dass wir weniger Anforderungen haben, weil wir noch keine UI-Tests ausführen und keine Datenbankinstanzen oder ähnliches erstellen. Wir verwenden nur Mocks für unsere Unit-Tests.
Nun zu unseren bisherigen Erfahrungen:
Für Java-Projekte verwenden wir Bamboo, was mit JUnit und Emma gut funktioniert. Und es gibt nicht so viel Aufwand, um ein neues Projekt einzurichten.
Für .NET-Projekte suchen wir noch nach der besten Lösung
Tempomat: Wir konnten es aufgrund von Problemen mit der Verbindung zu unserem Repository noch nicht zum Laufen bringen
TFS:
a) Es sind einige Einrichtungsschritte erforderlich, um den ersten Build ausführen zu können.
b) Es gibt einige Fallstricke, bei denen Sie die Zugriffsrechte überwinden müssen. Es gibt viele Rollen, die Sie definieren können, und Sie müssen genau wissen, welche Rechte für Ihren Erstellungsprozess und welche für Ihr persönliches Anmeldekonto gelten. Wenn Sie jedoch genügend Zeit für die Verwaltung haben, können Sie jede bestimmte Granularität definieren, die Sie benötigen.
c) In Bezug auf referenzierte Bibliotheken gibt es auch einige Dinge zu verwalten, wenn Sie Bibliotheken für viele Projekte freigeben möchten und diese nicht bei jedem einzelnen Projekt behandeln möchten
d) Das Ausführen des NUnit-Tests ist nicht so einfach, wie wir dachten. Es ist nur einfach, wenn Sie die von Visual Studio bereitgestellte Testausführung verwenden, dies ist jedoch nicht NUnit
e) Wir haben noch nicht versucht, NCover auszuführen (das Wichtigste zuerst :-))
Hudson: Nächstes Tool werden wir versuchen. Scheint ein wirklich gutes und einfaches Plugin für .NET zu haben, ich werde Sie wissen lassen, wie es funktioniert hat
Bambus: Erste Vorhersage: "Zu Java-spezifisch". Aber vielleicht versuchen wir es trotzdem mit dem .NET-Plugin, ich werde es Sie wissen lassen
Ich hoffe, wir können diese Diskussion fortsetzen und Erfahrungen austauschen.
Andy
quelle