Welche Continuous Integration Framework verwenden Sie und warum? [geschlossen]

21

Es gibt durchaus ein paar verschiedene Continuous Integration (CI) Frameworks da draußen, und ich frage mich, welche ist die beliebteste. Welche Rahmenbedingungen haben Sie bei Unternehmen eingesetzt, in denen Sie arbeiten?

Gibt es einen Grund, warum ein CI-Framework beliebter ist als ein anderes? Vielleicht liegt das an den Funktionen, die es bietet, den Dingen, die sich in es integrieren, oder vielleicht am gerechten Marketing?

Es scheint, wie die kontinuierliche Integration verwendet wird mehr in der Java und .net-Welten als etwa Rubin oder Python. Warum ist das?

Richard Warburton
quelle
Einer der Gründe , warum CI nicht so relevant mit Ruby und Python ist, dass die Sprachen interpretiert werden, so dass keine Notwendigkeit zu kompilieren nichts. Aber das ist nur meine persönliche Meinung ...
mliebelt
1
@mliebelt --CI ist mehr als nur das Kompilieren von Prüfungen. Sie können Einheit / Integrationstests (auch mit anderen abhängigen Projekten) laufen.
Apoorv Khurasia

Antworten:

31

Hudson oder Jenkins (letzteres ist eine Gabelung des ersteren). Grund: Es ist einfach (einfach zu installieren und zu verwenden) und hat eine große Flexibilität. Die Plug - in hinzufügen fast jede Funktionalität , die ich denken kann.

Vor einigen Jahren habe ich damagecontrol . Es war auch einfach zu bedienen, hatte aber nicht den Plugins. Aber der Autor entschieden , dass er sich auf der einfachen Lösung geben würde und die Entwicklung einer neuen Version gestartet, die von verschiedenen Servern bestand , miteinander zu kommunizieren (was zum Teufel?). Das hat nicht gut funktioniert hat und das Projekt wurde aufgegeben. Ich war einige Zeit auf der Suche, aber weder Cruisecontrol (zu kompliziert) noch Continuum haben mich wirklich erwischt. Bis hudson arbeitete , dass vom ersten Moment für mich.

Mnementh
quelle
Ich werde eine anständige UI dies auch hinzuzufügen.
Martijn Verburg
Ja, ich würde die Benutzeroberfläche unter einfachen Gebrauch zusammenzufassen.
Mnementh
5
CruiseControl war ein mühsames Unterfangen ... Hudson war so einfach in Betrieb zu nehmen. Der Chuck Norris ( wiki.hudson-ci.org/display/HUDSON/ChuckNorris+Plugin ) Plugin ist ein Muss.
Sam Dolan
Hudson ist wirklich großartig. Obwohl, ich wünschte , es bei Isolierung besser war. Wenn Sie eine gute Anzahl von verschiedenen Teams aller Arbeiten an losen Projekten haben, ist das Potential gegenseitig auf die Zehen zu treten Art von hoch.
Greg Gauthier
Dieser Programmierer kann immer noch nicht konfiguriert Hudson an der Arbeit unter Windows :(
MCHL
16

Ich benutze Teamcity bei der Arbeit und zu Hause. Es hat eine große Unterstützung für eine Vielzahl von Build - Läufer und ist erweiterbar über Plugins.

Nicht mit Stapeln von XML für die Konfiguration zu tun ist ein großes Plus in meine Bücher und die kostenlose Version ist für mein Haus Bedürfnisse ausreichend.

Ein Problem, das ich lief in mit Teamcity zu tun hat mit dem Versuch, es zu automatisch Baugruppen Version .NET zu erhalten. Ich hatte eine relativ komplizierte Abhilfe zu gründen, aber sobald es an Ort und Stelle war, funktionierte es wie ein Zauber.

Adam Lear
quelle
Im gehenden TC zu Hause zu versuchen. Wir hatten nur Probleme mit cruisecontrol.net.
Niemand
8

Ich persönlich habe bisher nur CruiseControl und CruiseControl.Net verwendet. Der Grund dafür liegt in der Wirtschaft. Sie sind einigermaßen stabil und sobald Sie sie eingerichtet haben, müssen Sie wirklich wenig tun, um sie zu warten. Die Benutzergemeinschaft ist in der Regel sehr hilfreich und kann auf Ihre Bedürfnisse erweitert werden.

Allerdings sind mir einige kommerzielle Angebote bekannt (eines von JetBrains, das andere von Atlassian), die eine bessere Einrichtungserfahrung und kommerziellen Support bieten. Ich wollte diese Angebote ausprobieren, hatte aber noch keine Chance.

CI-Tools spielen bei kompilierten Sprachen eine wichtigere Rolle als bei interpretierten Sprachen. Dies bedeutet jedoch nicht, dass das CI-Tool für interpretierte Sprachen verschwendet wird. Wenn Sie mehrere voneinander abhängige Projekte haben und sicherstellen möchten, dass eine Änderung nicht versehentlich ihre Abhängigkeiten zerstört - sind CI-Tools von unschätzbarem Wert.

Es gibt drei allgemeine Problemklassen, mit denen CI-Tools Sie ermitteln können:

  1. Kompilierungsfehler - Wenn sich die Signatur einer Klasse in einer Weise ändert, die Abhängigkeiten aufhebt, sollten Sie dies vor den verbleibenden Stunden eines Ergebnisses wissen.
  2. Logikfehler - Wenn sich das Verhalten einer Klasse so ändert, dass Abhängigkeiten aufgehoben werden, sollten Sie frühzeitig darüber informiert werden. Dies muss durch eine Art automatisierten Test überprüft werden, am häufigsten durch Unit-Tests.
  3. Abnahmetests - Wenn Sie über eine automatisierte Testsuite für das fertige Produkt verfügen, sollten Sie diese am besten häufig ausführen.

Interpretierte Sprachen werden nicht kompiliert, sodass keine Kompilierungsfehler auftreten. Die beiden anderen Probleme sind jedoch so häufig, dass CI-Tools für Projekte in Ruby / Python / Perl / etc nützlich sind.

Das Schlüsselwort sowohl in den Logikfehlern als auch in den Akzeptanztestpunkten ist "automatisiertes" Testen. Wenn Sie nicht über eine Reihe von Tests verfügen, die auf einem Computer ausgeführt werden können, fehlen Ihnen die größeren Vorteile der CI-Tools. Automatisierte Suiten können mit der Zeit aufgebaut werden, sodass Sie klein anfangen können.

Bearbeiten

In dieser Tabelle finden Sie Funktionsvergleiche einer großen Anzahl von CI-Tools (von denen ich viele nicht kannte):

http://confluence.public.thoughtworks.org/display/CC/CI+Feature+Matrix

Berin Loritsch
quelle
Die zusammengestellte / interpretierte Unterscheidung ist nicht so schwarz und weiß. Zum Beispiel hat Perl eine Compiler - Phase , die läuft beim Start (und separat mit der „-c“ Option aufgerufen werden kann) für alle Syntaxfehler zu überprüfen.
Andrew Medico
Das ist wahr. Ruby 1.9 und Python haben auch Kompilierungsphasen. Compile Fehlerklasse des Problems gilt für jede Sprache , die Sie , wenn die Referenzklasse / Variable / Methode während der Kompilierung existiert nicht alarmiert. Es gilt auf jeden Fall zu einer statisch typisierten Sprache. YMMV für dynamische, aber stark typisierte Sprachen (wie Ruby und Python).
Berin Loritsch
„sobald Sie sie eingerichtet haben, gibt es wirklich wenig Sie tun müssen , um es zu halten“ - nicht , dass die Server gilt für alle kontinuierlichen Integration ist?
Bryan Oakley
5

Team Foundation Server

Solides CI, enge Integration mit Visual Studio und Git als Versionskontrolle . Ich habe flexibler CI - Server gesehen, wie Hudson, aber TFS die enge Integration mit anderen Produkten macht die Erfahrung so nahtlos , dass es nur Sinn für mein Team macht.

Ryan Hayes
quelle
Mit "anderen Produkten" meinen Sie "Microsoft-Produkte". Ich kritisiere Sie nicht, aber MS hat seinen Tech-Stack so strukturiert, dass Sie zur Integration in MS-Produkte andere MS-Produkte oder viel Geduld und / oder Ausdauer benötigen.
GKelly
1
Völliger Unsinn. Sie haben APIs und SDKs für fast alles , was sie machen, auch die Kinect, aber nicht-MS - Programmierer wissen nicht, weil sie ihre Ohren so schnell decken , wie sie hören Micros .. (Link zu TFS SDK) msdn.microsoft.com/ de-de / library / bb130146 (v = VS.80) .aspx
Luke Puplett
2

Ich benutze sowohl CruiseControl.NET als auch Hudson . Einige meiner Builds sind auf einer von ihnen , und einige sind auf der anderen Seite .

Warum? Weil ich nicht der Bauingenieur bin und er, der der Bauingenieur ist, sie auf diese Weise eingerichtet hat!

Ich habe kein Problem mit der Art und Weise meines baut eingerichtet sind oder Beschwerden über jedes Produkt. Ich berichte Ihnen, wie die Dinge hier sind, sachlich-nüchtern und hoffen, dass Sie diese Perspektive zu schätzen wissen!

UPDATE: Seit ich die Antwort gepostet habe, wurde Hudson gegabelt und wurde Jenkins . Die obige Empfehlung gilt für Jenkins.

Azheglov
quelle
1

Pulse . Es besteht im Wesentlichen nur Arbeiten, die für einen anstrengenden Build - Ingenieur ist eine große Sache. Sie haben auch wirklich einen ausgezeichneten technischen Support. Der Hauptgrund , warum ich es so sehr lieben, dass wir mehr als 250 Projekte haben und es behandelt sie ohne Stottern; Ich kann nicht das gleiche für Hudson sagen.

ebneter
quelle
1

Unser Team arbeitet hauptsächlich in Python, C ++ und Java. Wir verwenden Buildbot für CI. Wir haben zunächst damit begonnen, weil es in Trac integriert ist und weil es einfach und unkompliziert zu sein schien. Ich glaube, dass es der CI Rahmen der Wahl in der Python Welt.


quelle
1

Hudson. Es ist ein wenig Buggy zu Zeiten, und einige der interessanteren Plugins nicht wirklich Arbeit, aber mit einem wenig rentabel es ist ziemlich verwendbar.

Ich würde wahrscheinlich verwenden Sie stattdessen Pulse, aber wenn Sie bauen auf mehreren Plattformen benötigen es ist> $ 5k, die ein bisschen viel ist.

Steve
quelle
1

CruiseControl.NET für die kontinuierliche Integration. Funktioniert recht gut, wenn auch mit der sehr großen Anzahl von Build - Projekt , das wir in CruiseControl- eingerichtet haben, die CCTray Desktop Tray app schrecklich nicht ansprechbar, auch bei langen Aktualisierungsintervallen ist.

NAnt ist für die Build-Skripte gedacht , die in den CruiseControl-Projekten ausgeführt werden. Für komplexere Erstellungsskripten haben wir NAnt um benutzerdefinierte C # NAnt-Tasks erweitert. Dies ist sehr hilfreich. Das Schreiben von Code in C # macht viel mehr Spaß als das Erstellen von NAnt-Skripten.

Wir sind ein Geschäft, Microsoft und theoretisch zu Microsofts Team Build 2010 bewegen, wenn wir unser Team Foundation Server-Umgebung 2010 migrieren.

Brett Rogers
quelle
0

Beachten Sie, dass Sie sollten in der Lage Ihre Anwendung von der Kommandozeile unabhängig von Ihnen haben einen CI-Motor läuft oder nicht zu bauen.

Dies bedeutet, dass die CI-Engine nur Ihre Build-Aufrufe systematisiert und Sie die Engine auswählen können, die Ihren speziellen Anforderungen am besten entspricht.

Ich mag Hudson in erster Linie, weil es sich gut anfühlt , aber ich weiß, dass ich ohne großen Aufwand zu einem anderen wechseln kann, wenn alles fehlschlägt. Wenn ja, würde ich wahrscheinlich zuerst die von Atlassian untersuchen, da ich das "Gefühl" der anderen Programme, die sie machen, mag .

Beachten Sie, dass die Austauschbarkeit impliziert, dass es keine Rolle spielt, in welcher Sprache sie geschrieben sind. Ich glaube, Java wurde für viele Engines ausgewählt, da die vielen Plattformen unterstützt werden und die vielen Bausteine ​​leicht verfügbar sind. Sie benötigen einen Web-Server - greifen ein. viele gleichzeitige Threads müssen - nur sie benutzen. Need extensibiility - Tropfen in einem Glas.


quelle
0

Bevor ich jemals den Begriff "Continuous-Integration" hörte (das war 2002 oder 2003), schrieb ich ein nächtliches Build-Skript, das sich mit cvs verband, eine saubere Kopie des Hauptprojekts und der fünf kleineren Unterprojekte, die alle erstellt wurden über ant Gläser dann eine WAR-Datei über ein zweites ant-Skript erstellt und umgeschichtet, die den Kater Ameise Aufgaben verwendet.

Es lief über Cron um 19 Uhr und verschickte E-Mails mit einer Reihe von angehängten Ausgabedateien. Wir haben es für die ganze 7 Monate des Projekts und es blieb bei der Verwendung für die nächsten 20 Monate Wartung und Verbesserungen.

Es hat gut funktioniert, aber immer noch lieber Hudson als Bash-Skripte, Cron und Ant.

sal
quelle