2009-10-02 6 views
8

Derzeit erstellen wir eine Reihe von C++ - Anwendungen für Win32-Plattform. Wir werden bald auf Linux portieren und dann vielleicht mehr (32 und 64 Bit für beide).So verwenden Sie Hudson beim Erstellen für mehrere Plattformen

Was ist die Standard-Praxis, verwenden Sie mehrere Hudson-Server jeweils auf ihrer eigenen Plattform, um einen Build zu erstellen, oder erstellt der Hudson-Service VMs und Builds?

Es ist mir nicht die beste praktische Möglichkeit, dies zu tun.

Idealerweise möchte ich nur eine Box mit einer Reihe von VMs, auf denen Hudson läuft, und dann startet es Builds wie benötigt.

Gibt es eine Ressource, auf die mich jemand verweisen kann?

Antwort

5

Wir verwenden Hudson zum Verwalten von C/C++ - (GNU C, GNU C++, Watcom C) Builds für mehrere Betriebssysteme. Für uns ist Software für Linux, Linux x64, QNX 4 und QNX6 gebaut. Die Art und Weise haben wir es aufgebaut ist:

  • 1 x VM für den Hudson-Server unter Windows
  • 4 x VMs, eine für jeden Slave-Typ, so habe ich 4 Hudson Sklaven - 1 jeweils für QNX4, QNX6 und Linux 32 und Linux 64. Alle laufen auf demselben Server, genauso wie verschiedene VMs, und wir hatten keine Probleme. Wir bauen ungefähr 100 Projekte auf, die fast gleichmäßig auf die 4 Systemtypen verteilt sind.

Sie sollten keine zusätzliche Hardware benötigen. Es gibt ein Hudson-Plugin, das mit VMWare-VMs funktioniert, um sie zu starten und nach Bedarf herunterzufahren.

Ich hoffe, dass hilft.

+0

Danke - es klingt wie eine gute Einrichtung für uns auch. – Tim

+0

Ich habe unser System von Grund auf neu eingerichtet, also weiß ich, dass es Zeit braucht, aber es ist nicht schwer. Ich habe gerade festgestellt, dass deine Frage letztes Jahr veröffentlicht wurde. Hast du etwas rennen bekommen? – Sagar

+1

haben Sie irgendwelche Tipps für die Einrichtung der Rückseite. Das aktuelle System ist Linux, und andere Builds müssen unter Windows ausgeführt werden. – myusuf3

2

Ich habe nie Hudson für C++ verwendet, aber für das, was Sie vorhaben zu tun, könnte es sinnvoll sein, auf die VMWare plugin zu schauen und zu sehen, ob es tun wird, was Sie wollen. Ich würde empfehlen, wenn möglich nur einen einzigen Hudson Master zu haben. Was Sie am wahrscheinlichsten tun möchten, ist ein VMWare-Maschinenbild mit einem Hudson-Slave-Prozess für jede Zielumgebung zu erstellen und dann einen Build in diesem Slave zu erzeugen.

+0

Das ist das ideale Ziel, aber ich bin mir nicht sicher, wie praktisch das ist. Ich muss einfach damit rumspielen. – Tim

2

Ich habe mit Hudson in einem Multiple-Plattform-Szenario vor etwas mehr als einem Jahr gespielt. Ich hatte einen Hudson-Server (der lächerlich einfach einzurichten war) auf einer Maschine und separaten Build-Slaves für jede der Plattformen. Ich erinnere mich, dass sich einer der Build-Clients für eine Weile in einer VirtualBox auf dem Rechner befand, auf dem der Hudson-Server gehostet wurde. (Ich denke, ich hatte den Server auch eine Weile auf einer VM.) Ich kann mich nicht erinnern, dass es bei dieser Einrichtung ein prinzipielles Problem gab.

Wenn Sie jedoch mehrere virtuelle Build-Maschinen auf der gleichen physischen Maschine bauen möchten, denke ich, dass Sie dafür eine sehr leistungsfähige Maschine benötigen würden. C++ - Kompilierung benötigt ziemlich viel Ressourcen und, IIRC, wenn Hudson einen Build startet, startet es auf allen Plattformen zur gleichen Zeit.

+0

Yep - Mir ist klar, dass wir vielleicht mehrere Maschinen haben müssen und in diesem Fall ist es vielleicht einfacher, Hudson auf jeder Plattform laufen zu lassen, obwohl das albern ist. Idealerweise möchte ich, dass der eine Hudson-Server jeden Slave anstößt. Ich denke, ich muss nur in den sauren Apfel beißen und zusätzliche Hardware kaufen. – Tim

+1

Tim, du brauchst nur einen Hudson-Server, nicht einen für jede Plattform. Aber du brauchst einen Build-Slave pro Plattform. Sie können dies mit virtuellen Maschinen testen, bis Sie denken, dass es funktioniert, aber am Ende werden Sie wahrscheinlich kein CI genießen, wenn Sie drei Plattformen in VMs auf demselben physischen Computer erstellen. – sbi

+2

Es ist ziemlich wichtig zu verstehen, dass du nur 1 * Hudson-Server brauchst. Sie können alles andere mit auf entsprechenden Architekturen installierten Slaves machen. (* für vernünftige Interpretationen von immer) –

1

Beachten Sie, dass zwischen dem Server, auf dem Hudson ausgeführt wird, und den Slave-Computern, die Ihre Software-Apps erstellen, keine Beziehung bestehen muss. Aufgrund der Magie von Java können Sie die verschiedenen Slave-Maschinen mithilfe von JNLP mit dem Master verbinden. (Ein Beispiel) Also, ob es sich um physische oder virtuelle Maschinen handelt, Sie können ein laufendes Windows, ein anderes Linux haben; ein 32-Bit, ein anderes 64-Bit; usw. - was auch immer Ihre Apps benötigen. Solange alle JRE installiert sind, können sie sich mit dem Hudson-Master verbinden und den Status der Builds melden.

Verwandte Themen