c++ - tutorial - teamcity




Welches Werkzeug für die kontinuierliche Integration eignet sich am besten für ein C++-Projekt? (4)

Wir verwenden Dart Dashboard . Es ist Open Source, wird aber von KitWare gesteuert . Sie haben seitdem den Namen in CDash geändert, von dem ich annehme , dass es immer noch so gut ist. Wir führen verschiedene Arten von Tests durch, einschließlich nächtlicher und kontinuierlicher Integration über 10 verschiedene Plattformen im Debug- und im Release-Modus sowie die Durchführung von Tausenden von Anwendungstests und die Berichterstattung der Ergebnisse auch dort.

Cruisecontrol und Hudson sind zwei beliebte kontinuierliche Integrationssysteme. Obwohl beide Systeme in der Lage sind, die automatisierten kontinuierlichen Builds zu erstellen, scheint es viel einfacher zu sein, ein Stapel- oder Bash-Build-Skript zu erstellen. Verwenden Sie dann Windows-Scheduler oder -Cron, um Builds zu planen.

Gibt es bessere Continuous-Integration-Systeme für C ++ - Projekte? Oder verwenden Sie einfach ein Skript und einen Scheduler?


Eine der netten Funktionen eines Continuous Integration (CI) -Tools ist, dass ein Build jedes Mal ausgelöst wird, wenn etwas in das Quellcodeverwaltungs-Repository eingecheckt wird.

Wenn das nicht etwas ist, das Sie brauchen, dann sind Sie wahrscheinlich besser mit dem Windows Task Scheduler oder Cron Jobs.

Darüber hinaus verfügen die CI-Tools über ein (Web-) Dashboard und erweiterte Protokollfunktionen.

Ihre Frage scheint mir eher "Warum sollte ich ein CI-Tool verwenden" und "Welches CI-Tool soll ich verwenden?". Wenn ein Batch-Skript Ihren Anforderungen entspricht, verwenden Sie das bitte. (Re) Erstellen einer Build-Umgebung wird nur einfacher, wenn Sie kein CI-Tool als zusätzliche Komponente benötigen. Wenn Sie einen von der Quellcodeverwaltung ausgelösten Build, ein Dashboard, die Speicherung alter Build-Ergebnisse oder eine andere Protokollierung verwenden möchten, verwenden Sie ein CI-Tool und vermeiden Sie die Entwicklung all dieser Funktionen in Batch- oder Shell-Skripten.


Sie können JetBrains TeamCity auch versuchen. Es ist ein kommerzielles Produkt, aber es gibt eine kostenlose Lizenz für bis zu 20 Build-Konfigurationen.


Wir haben CruiseControl für CI in einem C ++ Projekt verwendet. Während es das einzige ist, für das wir ant verwenden, startet das Ameisen-Build-Skript für CruiseControl einfach unser normales Build-Skript, also ist es sehr einfach und wir mussten es nicht wirklich lange aktualisieren. Daher ist die Tatsache, dass CrusieControl auf Java basiert, für uns kein Thema.

Die Hauptvorteile der Verwendung von etwas wie Tempomat sind

  • Eine nette Webseite, die den Build Status zeigt
  • E-Mail nach jedem Build oder nach fehlgeschlagenen Builds
  • Wird automatisch nach einem Commit für das Quellcodeverwaltungssystem erstellt
  • Ein Firefox-Plugin zur Überwachung des Build-Status
  • Zeigt die Ausgabe für alle Buildfehler an.
  • Zeigt an, welche Dateien seit dem letzten Build geändert wurden (gut um zu sehen, welcher Entwickler das Buid kaputt gemacht hat)

Natürlich können Sie selbst ein Skript schreiben, das all dies tut, aber warum funktioniert das alles? Auf lange Sicht sind die zusätzlichen anfänglichen Kosten für die Einrichtung von CruiseControl (oder ähnlichem) wahrscheinlich viel geringer als die Kosten für die Pflege und Aktualisierung eines benutzerdefinierten CI-Build-Skripts.

Wenn Sie nur einen täglichen Build starten müssen und ein einfaches Skript, das von cron gestartet wurde, für Ihre Bedürfnisse ausreicht, dann tun Sie das auf jeden Fall. Einer der Vorteile von CI ist jedoch, dass Sie nach jedem Einchecken einen Buildstatusbericht erhalten. Das Erstellen eines Skripts erfordert mehr Arbeit, und CruiseControl erledigt dies bereits.





continuous-integration