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?
java
c#
development-process
builds
Richard Warburton
quelle
quelle
Antworten:
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.
quelle
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.
quelle
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:
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
quelle
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.
quelle
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.
quelle
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.
quelle
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
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.
quelle
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.
quelle
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
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.
quelle