2012-06-20 10 views
7

Ich muss ein wichtiges C++ - Projekt, das derzeit in Eclipse entwickelt wird, mit CDT, mingw und cdt managed Build nutzen (keine externen Makefiles oder Build-Environment). Das Projekt selbst besteht aus vielen Teilprojekten.Ein eclipse/cdt-basiertes Build in eine kontinuierliche Integration integrieren

Ich möchte diesen Build in einen Continuous Integration Server integrieren (jenkins nämlich) und muss damit in der Lage sein, den Headless Build zu automatisieren.

Bisher habe ich es geschafft, die Projekt (leicht von jenkins) zur Kasse und haben es in einem Headless Modus bauen mit Eclipse, mit dem folgenden Befehl:

C:\prog\EclipseCdt\eclipse -nosplash -application org.eclipse.cdt.managedbuilder.core.headlessbuild -import %WORKSPACE%\project1 -import %WORKSPACE%\project2 -import %WORKSPACE%\project3 -build all 

Es ist jedoch nicht genug:

  • Build ist asynchron: vorheriger Befehl gibt (es Gabeln tatsächlich), während ich es erwarte Kontext zu halten, bis ich ein Ergebnis habe (wie es mit make auf linux oder devenv auf Windows würde)
  • Ich konnte die Build-Protokolle nicht extrahieren (idealerweise in einer Datei): Um in meine fortlaufenden Informationen zu integrieren, muss ich in der Lage sein, meine Build-Protokolle zu analysieren, um interessante Informationen anzuzeigen (über kaputte Dateien nachzudenken)
  • Idealerweise Ich möchte von Eclipse einen direkten Status (Rückkehrcode) erhalten, der anzeigt, ob bestanden oder nicht bestanden wurde.

Haben Sie eine Idee, wie Sie dieses Verhalten haben?

Beachten Sie, dass:

  • alternative Verwendung (extern) System bauen ist derzeit keine Option (ich die cdt Build verwalten halten muss, hat es eine Menge komplexer Geschichte)
  • ich schon geschaut habe auf Stack-Überlauf und Google und habe es nicht geschafft, einen Weg zu finden, trotz der scheinbaren Einfachheit meiner Notwendigkeit
  • Ich bin derzeit auf Windows 7/mingw 4.5.2/Eclipse-IDE für C/C++ - Entwickler Version: Indigo Release Build ID: 20110615-0604 aber ich denke, Frage ist x-Plattform

Antwort

7

es sieht aus wie wenn ich Eclipse von einem Cmd interaktiv starten würde, es Gabeln, wenn es von einem Fledermaus-Skript gestartet wird, tut es nicht. Also reichte es, die vorherige Zeile in Jenkins zu setzen, um den Trick zu machen.

Hinweise:

  • müssen Sie -data Parameter definieren, wo Ihre Werkbank hinzuzufügen (I bauen reinigen jedes Mal)
  • wie üblich, die Schuld Fenster und Anführungszeichen ....
  • --launcher.suppressErrors : falls etwas geht awoc, eclipse verhindert, dass ein Pop von der Anzeige bis (was eigentlich nicht angezeigt wird somit bauen Blöcke)

Final (Arbeit!-Befehl):

C:\prog\EclipseCdt\eclipse --launcher.suppressErrors -nosplash -data "%WORKSPACE%" -application org.eclipse.cdt.managedbuilder.core.headlessbuild -import "%WORKSPACE%\project1" -import "%WORKSPACE%\project2" -import "%WORKSPACE%\project3" -build all 

EDIT

  • hinzugefügt --launcher.suppressErrors
Verwandte Themen