CruiseControl [.Net] vs TeamCity für die kontinuierliche Integration?

117

Ich möchte Sie fragen, welche automatisierte Build-Umgebung Sie aufgrund Ihrer praktischen Erfahrung für besser halten. Ich plane eine .NET- und eine Java-Entwicklung, daher hätte ich gerne ein Tool, das beide Plattformen unterstützt.

Ich habe herumgelesen und mich über CruiseControl.NET , das für die Stackoverflow-Entwicklung verwendet wird, und TeamCity mit seiner Unterstützung für Build-Agenten auf verschiedenen Betriebssystemplattformen und basierend auf verschiedenen Programmiersprachen informiert . Wenn Sie also praktische Erfahrungen mit beiden haben, welche bevorzugen Sie und warum?

Derzeit interessiert mich hauptsächlich die Benutzerfreundlichkeit und Verwaltung des Tools, geschweige denn die Tatsache, dass CC Open Source ist und TC irgendwann lizenziert werden muss, wenn Sie viele Projekte ausführen müssen (weil ich brauche es für eine kleine Anzahl von Projekten).

Wenn es ein anderes Tool gibt, das die oben genannten Anforderungen erfüllt, und Sie der Meinung sind, dass es eine Empfehlung wert ist, können Sie es gerne in die Diskussion einbeziehen.

Zappan
quelle

Antworten:

111

Ich habe an und mit Continuous Integration-Tools seit dem gearbeitet, aus dem Cruise Control (Java-Version) hervorgegangen ist. Ich habe fast alle irgendwann ausprobiert. Ich war noch nie so glücklich wie mit TeamCity. Es ist sehr einfach einzurichten und bietet dennoch viel Leistung. Die Seite mit den Build-Statistiken, auf der die Build-Zeiten, die Anzahl der Komponententests, die Erfolgsquote usw. angezeigt werden, ist sehr schön. Die Projekthomepage von TeamCity ist ebenfalls sehr wertvoll. Bei einfachen .NET-Projekten können Sie TeamCity einfach mitteilen, wo sich die Lösung befindet und welche Assemblys Tests haben, und das ist alles, was es benötigt (außer dem Speicherort der Quellcodeverwaltung). Wir haben auch einige komplizierte MSBuild-Skripte verwendet und die Build-Verkettung durchgeführt. Ich habe auch zwei TeamCity-Upgrades durchlaufen und sie waren schmerzlos.

CruiseControl.NET funktioniert auch gut. Das Einrichten ist schwieriger, hat aber eine längere Geschichte, sodass es einfach ist, Lösungen im Web zu finden. Da CruiseControl.NET Open Source ist, haben Sie auch die Möglichkeit, beliebige Elemente hinzuzufügen oder zu ändern. Ich hatte CruiseControl.NET seit seiner Veröffentlichung verwendet und einen Teil des frühen Codes für cc.tray geschrieben (dankenswerterweise von jemandem neu geschrieben, der es besser wusste).

Cruise von ThoughtWorks sieht ebenfalls recht gut aus, aber ich sehe keinen zwingenden Grund für einen Wechsel. Wenn ich ein neues Projekt starten würde, könnte ich es versuchen, aber TeamCity hat großartige Arbeit geleistet, um die einfachen Dinge einfach zu machen und den Komplex ziemlich schmerzlos zu machen.

Bearbeiten: Wir haben vor ein paar Wochen ein Upgrade auf TeamCity 5.0 durchgeführt und es war ein weiteres schmerzloses Upgrade. Dadurch können wir die verbesserten Funktionen zur Codeabdeckung und die GIT-Unterstützung nutzen. Wir verwenden jetzt auch die Funktionen für den persönlichen Build und die vorab getesteten Festschreibungsfunktionen, die bereits seit einiger Zeit verfügbar sind. Ich dachte nur, ich sollte die Antwort aktualisieren, um anzuzeigen, dass sich TeamCity ständig verbessert und immer noch einfach zu bedienen ist.

Mike Zwei
quelle
Ich frage mich, ob Sie mit all Ihrer Erfahrung ein wenig Zeit haben könnten, einen Screencast zum Erstellen eines einfachen .NET-Projekts darauf zu teilen und mit TeamCity (unter Verwendung von JING (kostenloses Screencasting) oder einem anderen Tool) zu arbeiten und den Link hier oder irgendwo so und so zu posten Wir alle, die damit zu kämpfen haben, werden ein gutes Startup haben :) Danke.
Balexandre
2
@balexandre - Ich fand die Teamstadt-Dokumente ziemlich gut. Und @ bojs Antwort lieferte einen Link zu einem guten Screencast
Mike Two
Ich hatte immer Angst vor CI wegen des Images von CCNet, das ich hatte. Letzte Woche habe ich TeamCity 6.5 ausprobiert und es war eine absolute Freude. hat keine einzige XML / Konfigurationsdatei berührt.
Kay.one
1
Wenn Sie derzeit CC.Net verwenden und nach Team City wechseln möchten, ist dies schmerzhaft? Wie erzeugt TC MSI-Dateien?
Wes
@Wes, ich weiß nicht, ob dies für Sie noch relevant ist, aber wir haben mehr als 20 Projekte in CC.Net, aber kürzlich habe ich TeamCity für einige Android-Projekte implementiert, die wir haben. Der mit Abstand größte Schmerz war das Erlernen von Ant, aber das hätte ich tun müssen, wenn ich die Projekte in CC.Net gestellt hätte. Ich würde gerne alle unsere Projekte in TeamCity verschieben, wenn ich das Management davon überzeugen könnte, für die zusätzlichen Build-Konfigurationen zu zahlen, die wir benötigen würden (bis zu einem gewissen Punkt kostenlos), hauptsächlich aufgrund der Konfiguration, die in TeamCity ein Kinderspiel und in CC ein XML-Sumpf ist. Netz.
Johnc
33

Ich war / bin ein großer Fan von CC.NET. Wir haben derzeit 5 Projekte in CruiseControl und arbeiten hervorragend. Das Schreiben von Konfigurationsdateien mit der Hand kann schmerzhaft sein, ist aber in Ordnung.

Aber .

Nach dem Screencast von Kona: Kontinuierliche Integration und bessere Komponententests (das erste Drittel über TeamCity) werde ich auch TeamCity überprüfen. Ich liebe das integrierte Unit-Test-Dashboard und die Konfigurationsoberfläche.

Ich denke, jeder sollte sich dieses Video ansehen, bevor er sich für CC.NET oder TeamCity entscheidet.

ps: Ich hoffe, es gibt auch ein wertvolles CC.NET-Video im Internet.

boj
quelle
15

Mein Lieblings-CI-Server ist bei weitem Hudson. Einfach einzurichten und zu warten, viele schöne Grafiken, um Entwicklern und Nicht-Entwicklern Trends zu zeigen, und kostenlos.

Ich verwende TeamCity derzeit für ein Projekt und bin im Allgemeinen damit zufrieden, aber viele der von ihm generierten Diagramme sind nicht besonders nützlich und die Konfiguration ist komplizierter als bei Hudson.

Trotzdem ist TeamCity leistungsstark, für viele Zwecke kostenlos und verfügt über eine Killer-Funktion: Remote Run. Sie können Ihren Check-in direkt von IDEA oder Eclipse aus "vorab festschreiben", eine oder mehrere Build-Konfigurationen auf dem TeamCity-Server ausführen und die Änderungen nur festschreiben, wenn der Build erfolgreich ist (z. B. Kompilierungen und alle Tests bestehen).

Angesichts der Tatsache, dass Sie TeamCity und Hudson in wenigen Stunden zum Laufen bringen können, lohnt es sich möglicherweise, beide zu ergreifen und nebeneinander zu betreiben, zusammen mit allen anderen (wie CruiseControl), die Sie sich vorstellen können. Wenn Sie einen CI-Server nicht schnell für einen Nebeneinander-Vergleich bereitstellen können, verfügen Sie zumindest über einen Datenpunkt für eine einfache Installation und / oder Konfiguration.

Gene Gotimer
quelle
6
+1 für Hudson. Siehe auch: Verwenden von Hudson als .NET-Build-Tool: stackoverflow.com/questions/616149/… ; CruiseControl gegen Hudson: stackoverflow.com/questions/604385/…
Jonik
12

Ich habe beide erfolgreich in verschiedenen Projekten eingesetzt. Vom Setup- und Verwaltungsstandpunkt aus ist Team City weitaus einfacher zu handhaben. Sie müssen nicht wie bei CC mit .config-Dateien herumhacken, und die Einrichtung ist ein Kinderspiel. Da Sie nicht viele Projekte haben, würde ich Team City über CC empfehlen, bis Sie zu dem Punkt kommen, dass Team City $$ kostet.

SaaS-Entwickler
quelle
12

Ich habe sowohl CC.net als auch TeamCity verwendet. Ich habe die Aufgabe, TeamCity für meine Organisation (5 Entwickler) einzurichten und zu installieren. Unsere Organisation verwendet einige ungewöhnliche Vorgehensweisen und Tools (zumindest für Organisationen unserer Größe), z. B. Perforce für die Quellcodeverwaltung und mehrere Build-Agenten, die auf heterogenen Betriebssystemen ausgeführt werden, was zu anfänglichen Problemen bei der Einrichtung führte. Der Support per E-Mail war jedoch absolut erstklassig bei der Einrichtung. Ich erhielt Antworten auf meine dummen Fragen in buchstäblich Minuten.

Die Benutzeroberfläche ist intuitiv und reaktionsschnell sowie mit zahlreichen Funktionen ausgestattet. Das Produkt fühlt sich sehr teuer an. Die Konfiguration ist einfach und die Weboberfläche ist intelligent genug, um sich selbst zu aktualisieren, ohne den Agenten oder die Serverdienste neu zu starten oder sogar die Seite zu aktualisieren.

Ich habe das Gefühl, dass wir nahezu alle erweiterten Funktionen des Produkts verwenden und bisher überhaupt keine Fehler gefunden haben. Ndepend-Integration, verschachtelte NAnt-Skripte, Perforce-Versionsbeschriftung, Sie nennen es, wir machen es.

Ich kann TeamCity jedem empfehlen, der wirklich einen Continuous Integration Server oder einen Build Server sucht.

user28669
quelle
Perforce ist ein ungewöhnliches Werkzeug? Perforce ist fantastisch für Teams jeder Größe. Ich benutze es selbst für meine
Heimentwicklung
@sonstabo, ich würde dem zustimmen, die meisten kleinen Unternehmen entscheiden sich für SVN oder GIT und Perforce wird hauptsächlich bei größeren Unternehmen eingesetzt. Ich habe Perforce verwendet und es hat mir gefallen, aber ich war bei einer 1.000-Entwickler-Firma, als ich es verwendet habe.
Samuel Neff
3

Ohne alternative Werkzeuge auf dich werfen zu wollen :-)

Hudson ist eine großartige Open-Source-Alternative. Ich habe CC und CC.net verwendet und ich gebe zu, dass sie fantastische Tools sind. Ich denke darüber nach, zu Hudson zu wechseln, da es viel einfacher einzurichten und zu warten scheint.

https://hudson.dev.java.net/

Scott James
quelle
1
+1 Da niemand an Hudson für .Net CI zu denken scheint. Ich habe Cruise Control, Team City und Bamboo verwendet und festgestellt, dass Hudson in den meisten Fällen, in denen das Budget ein großes Problem darstellt, das beste Werkzeug für diesen Job ist.
Dan Rigby
3

Stellen Sie sicher, dass das System, für das Sie sich entscheiden, auf die Anzahl der Projekte skaliert, für die Sie es benötigen ...

Ich verwende CruiseControl.Net, würde es aber nicht zum Erstellen vieler Projekte empfehlen ... Ich habe eine (möglicherweise etwas seltsame) Anordnung, in der ich viele statische C ++ - Bibliotheken habe, die ich in Anwendungen zusammenstelle. Jede Bibliothek hängt von anderen Bibliotheken ab und die Apps ziehen eine Reihe von Bibliotheken ein und erstellen sie. Jede Bibliothek hat eine Testsuite. Jede App verfügt über eine Testsuite. Ich baue für 5 Compiler und Variationen von (Windows-) Plattformen.

Das erste, was ich fand, war, dass die Projekttrigger von CC.Net nicht ganz das sind, was Sie brauchen, und dass der Multi-Trigger nicht gut mit Projekttriggern funktioniert. Die Art und Weise, wie Projektauslöser funktionieren (sie verwenden Remoting, um eine Verbindung zu dem Server herzustellen, auf dem das Projekt gespeichert ist (auch wenn es sich um ein Projekt handelt, das von derselben Instanz von CC.Net verwaltet wird). Anschließend werden alle Projekte von diesem Server abgerufen und die Liste nacheinander durchsucht Wenn Sie nach dem Projekt suchen, an dem Sie interessiert sind ...), bedeutet dies, dass sie nicht gut skaliert werden können. Sobald Sie eine bestimmte Anzahl von Projekten überschritten haben, werden Sie feststellen, dass CC.Net den größten Teil der CPU für Ihre Build-Maschine benötigt.

Natürlich ist es Open Source, also können Sie es beheben ... Und ich bin sicher, es ist in Ordnung für eine kleine Anzahl von nicht voneinander abhängigen Projekten.

Weitere Details zu den Problemen und einigen Patches für CC.Net finden Sie hier http://www.lenholgate.com/archives/cat_ccnet.html

Len Holgate
quelle
oh ... danke für diese Info, wertvoller Beitrag. vor allem, wenn gesagt wird, dass TC ein einfaches Setup ist und seine Begrenzung die Anzahl der Projekte ist, bei denen CC & CC.Net ins Spiel kommen könnten. Aber wie Sie sagen, es kommt zu Problemen, wenn die Anzahl der Projekte steigt ...
Nochmals vielen
Selbst in meiner stark gehackten Version von CC.Net habe ich Probleme, weil CC.Net einen Thread pro Projekt-Ansatz für die Planung verwendet, und das ist meiner Meinung nach nur ein Mistdesign.
Len Holgate
2

Ich habe vor kurzem cc .net eingerichtet. Es ist eine großartige Anwendung, erfordert aber ein wenig Geduld. Sie werden Konfigurationsdateien im Editor viel bearbeiten :)

Es ist schon eine Weile her, also ist es gut unterstützt und Sie können normalerweise jemanden finden, der getan hat, was Sie vorher tun wollten. Das Webinterface ist ebenfalls .net, was für uns ein Plus war, da wir ein Microsoft-Shop sind.

Ich habe TeamCity noch nicht verwendet, aber ich habe einige Empfehlungen davon gehört und es sieht hübsch aus.

alexmac
quelle
2

Ich hatte in meiner vorherigen Firma Erfahrung mit dem Einrichten und Ausführen von CruiseControl (Java-Version) unter Linux. Wie die meisten Leute vermuten, ist die Einrichtung nicht die einfachste Sache. Sie müssen das Framework verstehen, um die funktionsfähige / verwaltbare Konfiguration zu erstellen. Sobald Sie diesen Buckel überwunden haben, ist CruiseControl meiner Meinung nach ziemlich flexibel genug, um es Ihnen zu ermöglichen, verschiedene Dinge für verschiedene Szenarien zu tun.

Neben der CruiseControl-Dokumentation enthält die Wiki-Seite auch einige nützliche Informationen.

Ich habe keine direkte Erfahrung mit TeamCity. Die Commit-Funktion vor dem Test sieht jedoch interessant genug aus.

Das andere CC-Tool, das Sie sich ansehen könnten, ist Bamboo von Atlassian. Es ist viel einfacher einzurichten und die Oberfläche ist schöner. Es ist jedoch nicht so flexibel wie das, was CruiseControl bietet.

Ejel
quelle
1

Eine dritte Option, die Sie in Betracht ziehen sollten: Thoughtworks 'Cruise. Es basiert auf CruiseControl, bietet jedoch viel mehr Funktionen, eine einfachere Einrichtung usw. usw. Nicht kostenlos (oder Open Source).

http://studios.thoughtworks.com/cruise-continuous-integration

Der Schlumpf
quelle
1
Ich habe mich einige Male mit Cruise befasst, wenn es darum geht, ein CI-System einzurichten. Es ist nicht viel einfacher als zum Beispiel CC.NET. Es hat seine Stärken beim Erstellen und Bereitstellen von Flows, aber als CI-Tool ist TeamCity viel kompetenter
haqwin
Wenn Sie für Cruise / Go bezahlen, können Sie TeamCity auch kostenlos erhalten.
Niall Connaughton
0

Ich benutze Teamcity seit anderthalb Jahren und habe eine großartige Erfahrung. Ich habe eine Reihe von .NET- und Java-Projekten integriert und Tools wie MSBuild, Maven usw. verwendet. Ich fand Teamcity ziemlich einfach einzurichten und zu bearbeiten. Ich habe es geschafft, CI auch für einige SQL-Projekte zum Laufen zu bringen, was ein Albtraum war, der mit anderen CI-Tools schlimmer hätte sein können.
Kürzlich auf Teamcity 8.0.6 aktualisiert, was schmerzlos war. Außerdem bietet Teamcity eine REST-API, die für einige Szenarien sehr nützlich ist. Wenn Sie Powershell zur Automatisierung von Builds verwenden, stehen auf GitHub eine Reihe von Psake / Teamcity-Integrationsskripten zur Verfügung

Mohammad Nadeem
quelle