Frage

kann ich denke an viele gute Gründe, um mit ihm; aber was sind die Nachteile, um es?

(neben anderen Server vom Kauf)

Was sind einige Vorteile einer täglichen Build anstatt sie zu verwenden?

War es hilfreich?

Lösung

(Es ist erwähnenswert, dass durch "kontinuierliche Integration" Ich meine automatische Integration mit einem automatischem Build-Prozess und automatisch führt Tests und automatisch erkennt jedes Stück Ausfall.

Es ist auch erwähnenswert, dass „die kontinuierliche Integration“ bedeutet nur zu einem Stamm oder Testserver. Es bedeutet nicht, "Push jeder Live ändern".

Es gibt viele Möglichkeiten, die kontinuierliche Integration falsch zu tun.)


Ich kann nicht aus irgendeinem Grund denken, nicht kontinuierliche Integrationstests zu tun. Ich glaube, ich gehe davon aus, dass „die kontinuierliche Integration“ umfasst die Prüfung. Nur weil es bedeutet nicht, kompiliert es funktioniert.

Wenn Ihr Build und / oder Tests lange dauern, dann kann die kontinuierliche Integration teuer werden. In diesem Fall laufen die Tests offensichtlich auf Ihre Änderung beziehen, bevor die commit (Coverage-Analyse-Tools, wie SVN :: Notify , und die Entwickler warnen, wenn es fehlschlägt. Archivieren Sie die Testergebnisse mit so etwas wie Smolder . Das ermöglicht es Entwicklern, schnell zu arbeiten, ohne um zu sitzen beobachten Testreihen laufen, während sie noch Fehler früh zu kontrollieren.

Wie gesagt, mit einer wenig Arbeit können Sie oft können Sie Ihren Build- und Testprozess beschleunigen. Viele Male langsam Tests sind das Ergebnis jeder Test zu viel Auf- und Abbau zeigt auf einem System zu tun haben, die das gesamte System gekoppelt ist viel zu erfordern eingerichtet werden nur ein kleines Stück zu testen.

oft Entkoppelung hilft, Subsystemen in unabhängige Projekte ausbricht. Je kleiner Umfang erleichtert das Verständnis und schneller baut und testet. Jede begehen kann, ohne behindern auf den Programmierer eine vollständige Build und Test machen. Dann werden alle Teilprojekte gesammelt werden können zusammen Integrationstests zu tun.

Einer der wichtigsten Vorteile der Verwendung der Testsuite auf jedem begehen, auch wenn es nach dem Commit, ist, dass Sie wissen, was die Build brach. Anstatt „etwas, das wir gestern brach das Build“, oder noch schlimmer „vier Dinge, die wir gestern die Build auf unterschiedliche Weise brach und jetzt müssen wir es entwirren“ es ist „Revision 1234 brach das Build“. Sie haben nur diese eine Revision zu prüfen, um das Problem zu finden.

Der Vorteil einer täglichen Build zu tun, ist, dass Sie zumindest wissen, dass es eine vollständige, bereinigter Build und Testlauf jeden Tag geschieht. Aber Sie sollten das sowieso tun.

Andere Tipps

Ich glaube nicht, gibt es irgendwelche Nachteile zu. Aber aus Gründen des Arguments, ist hier Eric MINICKs Artikel auf UrbanCode ( "Es geht um Tests ist baut nicht.") Er Werkzeuge kritisiert, die auf Martin Fowler Arbeit sagen, dass sie genügend Zeit für Tests lassen sie sich nicht.

"Um in CI wirklich erfolgreich zu sein, behauptet Fowler, dass die Build sollte Selbsttest sein und dass diese Tests sowohl Einheit und End-to-End-Tests umfassen. Zugleich sollte die Build sehr schnell - idealerweise weniger als 10 Minuten -., weil es auf jedem Commit ausgeführt werden soll Wenn es eine beträchtliche Anzahl von End-to-End-Tests sind, so dass sie zum Zeitpunkt der Erstellung der Ausführung während des gesamten Prozesses unter 10 Minuten zu halten, ist unrealistisch
Fügen Sie in der Nachfrage nach einem Build auf jeden begehen, und die Anforderungen beginnen zu fühlen, unwahrscheinlich. Die Optionen sind entweder langsames Feedback oder die Entfernung von einigen Tests. "

James Shore hatte eine große Reihe von Blog-Einträgen über die Gefahren zu denken, dass ein CI-Tool wie Cruisecontrol sollten Sie die kontinuierliche Integration taten:

Eine Gefahr auf der Einrichtung einen CI-Servers Verschiebung Ziel, zu denken, dass das Wichtigste ist, zu „den Build zu halten passing“ im Gegensatz zu „sicherzustellen, dass wir qualitativ hochwertige Software haben“. So stoppen Menschen über die Pflege, wie lange die Tests laufen nehmen. Dann nehmen sie zu lange, sie alle zu laufen, bevor checkin. Dann hält die Build brechen. Dann wird die Build immer gebrochen. So können die Leute, die Tests auf Kommentar, um den Build-Pass zu machen. Und die Qualität der Software geht nach unten, aber hey, das Build ist vorbei ...

Generell gibt es zwei Fälle, in denen ich die kontinuierliche Integration nicht wirklich Sinn gesehen habe. Denken Sie daran, ich bin ein großer Verfechter von CI und versuchen, es zu verwenden, wenn ich kann.

Die erste ist, wenn der roi nur keinen Sinn macht. Ich entwickle derzeit mehrere kleine interne Anwendungen. Die Anwendungen sind in der Regel sehr trivial und der gesamte Lebenszyklus der Entwicklung ist etwa eine Woche oder zwei. Um richtig alles Setup für CI verdoppeln würde wahrscheinlich das, und ich würde wahrscheinlich nie wieder, dass die Investitionen sehen. Sie können argumentieren, dass ich es wieder in Wartung zu bekommen, aber diese Anwendungen sind so wahrscheinlich verworfen werden, da sie aktualisiert werden. Beachten Sie, dass Ihre Aufgabe ist es wahrscheinlich Software zu versenden, erreicht nicht zu 100% Codeabdeckung.

Das andere Szenario, das ich erwähnt habe gehört, dass CI keinen Sinn macht, wenn Sie nicht mit den Ergebnissen geht, etwas zu tun. Zum Beispiel, wenn Ihre Software QA gesendet werden muss, und das QA-Mitarbeiter alle paar Tage in einer neuen Version nur wirklich sehen kann, macht es keinen Sinn zu haben, alle paar Stunden baut. Wenn andere Entwickler werden nicht auf Code-Metriken schauen und versuchen, sie zu verbessern, macht es keinen Sinn, sie zu verfolgen. Zugegeben das ist nicht die Schuld der CI nicht eine gute Technik zu sein, ist es ein Mangel an Ihrem Team bereit CI zu umarmen. Dennoch macht keinen Sinn, ein CI-System in einem solchen Szenario zu implementieren.

Beim Start dauert es eine Weile, alles einzurichten.

Wenn Sie Tests hinzufügen, Netzabdeckung, statische Code-Inspektionen, Dublettensuche, Dokumentation Build und verteilt, kann es eine lange Zeit (Wochen) nehmen Sie es richtig zu machen. ein Problem Danach kann die Build beibehalten wird.

z, wenn Sie Tests Lösung hinzufügen, können Sie die Build haben sie auf der Grundlage einiger Kriterien automatisch erkennen oder Sie müssen Update Build-Einstellungen manuell die. Automatische Erkennung ist viel schwieriger richtig zu machen. Das Gleiche gilt für Abdeckung. Same der Dokumentation Generation ...

Der einzige gute Grund nicht kontinuierliche Integration zu tun kommt, wenn Sie Ihr Projekt bekommen haben bis zu dem Punkt zu arbeiten, wo Ihre Integrationstests keinen Defekt in einer guten langen Zeit identifiziert hatten und sie zu viel Zeit jeden laufen Zeit tun Sie einen Build. Mit anderen Worten: Sie haben genug kontinuierliche Integration getan, die Sie sich selbst bewiesen haben, dass Sie es nicht mehr benötigen

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top