Wie buildet ihr eure PlugIns?

Status
Nicht offen für weitere Antworten.

Wildcard

Top Contributor
Hi,

wir überlegen derzeit ein neues build system (zunächst für ein einziges Eclipse basiertes Projekt, bei Erfolg später evtl. auch reguläre J2EE Projekte) aufzusetzen.
Da den PlugIn Entwicklern unter euch wohl hinreichend die Schwierigkeiten mit konventionellen PDE Builds in komplexen Build Systemen bekannt sind, würde mich interessieren, was habt ihr bereits versucht, was hat funktioniert, was hat nicht funktioniert?

In das CI System sollen auch Unit-,Plugin-Test (inkl Oberflächentests der PlugIns), Metriken, Code Coverage, Benchmarks,... angeschlossen werden.
Die Versionsverwaltung ist CVS, die zukünftige Lösung sollte aber natürlich auch mit SVN funktionieren.

Nun stellt sich die Frage nach der richtigen Kombination der einzelnen Softwarebausteine.
Meine initiale Idee wäre Hudson als CI Server und für Build,Test,Deploy,... Buckminster über ein Ant Script aufrufen, aber wie bindet man die Tests und die Metriken sinnvoll in diesen Prozess ein?

Wie sind eure Erfahrungen mit Maven für diesen Anwendungsfall?
Wie führt ihr die PlugIn Tests aus?
Wie sieht bei euch die Infrastruktur im allgemeinen aus und wie sind eure Erfahrungen damit?

Gruß und Dank,
Wildcard
 
V

Vayu

Gast
In meiner alten Firma haben wir Ant hergenommen, um unsere plugins zu bauen und (ich weiss nimmer genau wie es gemacht wurde) Teile von eclipse hergenommen, um die JUnit tests laufen zu lassen. Atlassian Clover haben wir als Code Coverage Tool hergenommen, lässt sich wunderbar über Ant einbinden. Kost zwar Geld, ist aber wirklich mächtig. SVN und CVS hatten wir beides drin, frag nicht wieso ^^

GUI tests haben wir ausgelagert, dafür hatten wir n ecilpse plugin geschrieben, mit dem die durchgeführt wurden)

Aber der Rest lief unter Linux mit ant auf der Kommandozeile.
 

Ebenius

Top Contributor
Unser Hauptprodukt besteht aus circa 50 Modulen. Die meisten davon sind Java ein paar C, C++, TCL, bash-Skripte, etc. Daher wird bei uns alles mit make/GNUmake gebaut. In manchen Projekten ruft das Makefile ANT auf. Wenn Du reine Java-Anwendungen baust, würde ich davon abraten. Wenn Du, wie wir, auch andere Technologien einsetzt, ist das gar nicht mal so schlecht.

Grüße, Ebenius
 
V

Vayu

Gast
so wars bei uns am anfang auch, make mit ant verbandelt, das wurde aber bei der grösse echt hässlich. Unser RCP besteht aus ca. 30 plugins (nur Java) mit nochmal ca. der hälfte an test plugins.

da haben wir dann mal in den "sauren" apfel gebissen und komplett auf ant umgestellt. Aber es hat sich gelohnt.
 
W

WildcardGast

Gast
Erstmal danke für die Antworten.
Auf ANT setzen wir schon lange und es sind auch reine Java Projekte, daran soll es also nicht scheitern.
Was mich derzeit stört ist der extrem hohe ANT-Script Aufwand für den PDE Build und die Tests, ausserdem suche ich nach einer komfortablen Möglichkeit die Ergebnisse an die CI Software weiterzureichen.
Nach Möglichkeit würde ich gerne vermeiden ein Build Eclipse zu pflegen, mit PDE zu builden, das Ergebnis in ein Test/Metrik Eclipse zu packen und diese Instanz dann noch n mal zu starten um alle Tests und Metriken durchlaufen zu lassen.
Idealerweise sollten die PlugIn Tests zB self hosted sein, wie es beim PDE Build ja auch möglich ist, aber ich versuche mir die hässlichen PDE Scripte (customTargets.xml, test.xml,...) zu ersparen und damit die Integration neuer Projekte möglichst einfach zu gestallten.
Buckminster geht da IMO den richtigen Weg, aber es funktioniert derzeit leider noch nicht so wie ich es gerne hätte. :-/
 

Wildcard

Top Contributor
Also mal ein Update mit den bisherigen Ergebnissen.

Derzeit sieht der Plan folgendermaßen aus:
Das CI System wird Hudson, den großteil der Arbeit mit den Bundles möchte ich allerdings in Buckminster auslagern.
Dazu habe ich ein Hudson PlugIn geschrieben um einen neuen Builder ins System zu integrieren (Buckminster).
Im Job das den Buckminster Builder verwendet werden dann die Commands für Headless Buckminster in Form einer Liste eingetragen, also zB
Code:
resolve my.product.cquery
perform build.site
Das Hudson PlugIn setzt alle notwendigen Parameter für den Buckminster Aufruf (commands, workspace, buckminster.output.root,...) und startet den Build.
Die PlugIn Tests werden im Anschluss an den Build mit ANT gestartet. Als Framework möchte ich dafür TPTP verwenden, da es die Tests self hosted durchführen kann, und der Workspace dank Buckminster ja bereits vollständig während des builds materialisiert wurde.

Sollte sich dieses System bewähren, werde ich einen ausführlicheren Bericht schreiben und das PlugIn natürlich dem Hudson Projekt anbieten.

Was noch fehlt ist das Einbinden von Metriken und publishen von Reports, aber erst mal sehen ob der Rest auch wirklich so tut wie er soll :D
 

Wildcard

Top Contributor
--Update--

Das Hudson Plugin für die Buckminster Integration ist bald fertig.
Derzeit möglich:
-beliebige viele Eclipse Instanzen in der Hudson Konfigurationsseite anlegen
-zusätzliche startup Parameter pro Instanz angeben
-buckminster builder im job verwenden
-eclipse instanz auswählen
-liste mit commands eintragen
-bei perform commands wird automatisch das property buckminster.output.root auf das Hudson Artifacts Directory gesetzt
-Die Ausgabe wird an den BuildListener zurückgegeben
-der Workspace wird auf den Hudson Workspace gesetzt
Dadurch kann man wahlweise das check-out von einem Hudson SCM Plugin erledigen lassen, oder alles von Buckminster resolven lassen (oder beides)


Noch offene Punkte für den automatischen Build
-Dem Sonar Plugin beibringen das es mehrere Projekte pro Job analysieren muss
-Dem Warnings PlugIn den Buckminster Output übersetzen
-Einen neuen Ansatz für automatisierte PlugIn Unit Tests finden, da sich TPTP auf Linux Systemen als Totalausfall erweist :?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D RCP P2-Repository für Eclipse-Plugins Plattformprogrammierung 0
A RCP Objekt(parameter) zwischen Plugins austauschen Plattformprogrammierung 0
D RCP closed source RCP erweitern & Plugins nutzen Plattformprogrammierung 4
J Zwei Applikationen aus mehreren Plugins generieren Plattformprogrammierung 2
M RCP Ein Command in mehreren Plugins verwenden? Plattformprogrammierung 12
G RCP Abhängigkeiten von Eclipse Plugins Plattformprogrammierung 9
S Equinox: plugins und features Plattformprogrammierung 8
J Daten zwischen Plugins austauschen Plattformprogrammierung 4
M Daten zwischen 2 Eclipse-Plugins tauschen Plattformprogrammierung 5
P Wo im Projekt weitere Plugins anmelden ? Plattformprogrammierung 2
S PreferenceStore und unterschiedliche Plugins Plattformprogrammierung 4
lumo ECLIPSE RCP - mehrere plugins - eine resource? Plattformprogrammierung 3
M Teilweise Probleme beim Updaten von Plugins Plattformprogrammierung 3
S Versionsprobleme beim Erstellen eines Plugins Plattformprogrammierung 6
E Test von RCP Plugins in Fragmente oder Plugins Plattformprogrammierung 3
G Aufteilung Plugins Plattformprogrammierung 8
M JUnit 4.3.1 aus eclipse plugins durch junit 4.4 ersetzen Plattformprogrammierung 2
dzim java.lang.ClassNotFoundException beim laden eines Plugins Plattformprogrammierung 10
Paule Eclipse Instanz + eigene Plugins Plattformprogrammierung 4
S Plugins interagieren lassen Plattformprogrammierung 6
dzim eigene Application und PlugIns Plattformprogrammierung 16
dzim Classpath in PlugIns Plattformprogrammierung 7
T [RCP] Was passiert genau beim laden eines Plugins? Plattformprogrammierung 4
G Eclipse, Plugins, Properties, und wo zum Geier steckt das? Plattformprogrammierung 21
lhein Sprachumschaltung eines eigenen Eclipse Plugins Plattformprogrammierung 8
T Kommunikation zwischen Plugins (RCP) Plattformprogrammierung 18

Ähnliche Java Themen


Oben