Continuous Build Server (cc.net, Hudson, Bambus usw.) Remote Build Erfahrung?


9

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.

Antworten:


8

Hudson (Update: In der heutigen Welt würde ich Jenkins verwenden, eine Gabelung von Hudson.)

Ich habe Hudson sowohl in Java- als auch in .NET-Unternehmensumgebungen für Projekte mit hoher Sichtbarkeit verwendet (Sie waren wahrscheinlich auf einigen Websites). Hudson ist von Anfang an solide, aber das Beste daran ist, dass es viele Plugins gibt, mit denen Sie fast alles tun können, was Sie wollen. Hudson ist hochgradig konfigurierbar, hat eine großartige Community und ist in einer Clusterumgebung sehr einfach einzurichten, wenn mehrere Builds gleichzeitig ausgeführt werden müssen. Es ist mein Lieblings-CI-Server von allen, die ich verwendet habe (CC.NET, Hudson und TFS).

Außerdem können Sie das ChuckNorris-Plugin verwenden , damit er Ihnen die Daumen nach oben oder unten gibt.


1
Hudson ist eine gute Wahl, wenn Sie nichts Exotisches tun, aber am Ende des Tages, wenn Sie nicht das tun können, was Sie in einem Batch-Skript versuchen, wird Hudson es wahrscheinlich auch nicht sehr gut machen.
Bill

Hudson hat sich in Jenkins und Oracle Hudson gegabelt. Möchten Sie uns mitteilen, welches Sie verwenden möchten?

1
@ Thorbjørn: Ich bin Pro-Jenkins. Es gibt mehrere Gründe , aber der Mörder für mich ist, dass Jenkins sich aktiver entwickelt - hauptsächlich, weil Kohsuke Kawaguchi, der Hauptdarsteller hinter Hudson, im Jenkins-Lager ist. Und es scheint, dass Jenkins die wahre Fortsetzung des von ihm gestarteten Projekts ist . Oh, und schließlich hat Jenkins ein Logo, das kein Microsoft-ClipArt ist!
Tom Anderson

@ Thorbjørn - Ich stimme Tom zu. Ich habe Hudson seit ungefähr einem Jahr nicht mehr verwendet (derzeit verwende ich TFS), aber das ist der allgemeine Konsens, den ich gehört habe, dass Jenkins der richtige Weg ist. Wieder habe ich auch nicht benutzt, seit sie gegabelt wurden, aber wenn ich es wieder aufheben müsste, würde ich wahrscheinlich die Jenkins-Route gehen.
Ryan Hayes

7

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 :)


3

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.


1

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.