Ich verwende derzeit Jenkins / Hudson für die kontinuierliche Integration eines großen, meist C ++ - Projekts. Wir haben separate Projekte für Trunk und jede Niederlassung. Es gibt auch einige verwandte Projekte für den Java-Code, aber die Einrichtung für diese Projekte ist derzeit recht einfach (wir können jedoch später mehr tun). Die C ++ - Projekte führen Folgendes aus:
- Erstellt alles mit Optionen, ob neu konfiguriert, sauber erstellt oder eine neue Kasse verwendet werden soll
- Erstellt optional alle Tests und führt sie aus
- Führt optional alle Tests mit Valgrinds Memcheck aus
- Führt cppcheck aus
- Erzeugt Sauerstoffdokumentation
- Veröffentlicht Berichte: Unit-Tests, Valgrind, Cppcheck, Compiler-Warnungen, SLOC, offene Aufgaben und Codeabdeckung (mit gcov, gcovr und dem Cobertura-Plugin)
- Stellt Code jede Nacht oder bei Bedarf in einer Testumgebung und einem Paket-Repository bereit
Alles ist für automatische Builds konfigurierbar und für On-Demand-Builds optional. Darunter befindet sich ein Bash-Skript, das einen Großteil davon steuert. Dies hängt weiter von unserem Build-System ab, das Automake und Autoconf zusammen mit benutzerdefinierten Bash-Skripten verwendet.
Wir haben (zu der Zeit) angefangen, Hudson zu verwenden, weil die Java-Leute das verwendeten und wir wollten nur nächtliche Builds. Seitdem haben wir viel mehr hinzugefügt und fügen weitere hinzu. In gewisser Hinsicht ist Hudson großartig, aber sicherlich nicht ideal.
Ich habe mir andere Lösungen angesehen und die einzige, die aussieht, als könnte sie ein Ersatz sein, ist Buildbot. Wäre Buildbot für diese Situation besser? Lohnt sich die Investition, da wir bereits Hudson einsetzen? Warum?
EDIT : Jemand fragte, warum ich Hudson / Jenkins nicht als ideal empfunden habe. Die kurze Antwort lautet, dass alles verbessert werden kann. Ich frage mich nur, ob Jenkins die derzeit beste Lösung für meinen Anwendungsfall ist oder ob es etwas Besseres gibt (Buildbot?), Das auf lange Sicht einfacher zu warten wäre, selbst wenn neue Anforderungen auftauchen.