So verwenden Sie Hudson beim Erstellen für mehrere Plattformen

8

Im Moment erstellen wir eine Reihe von C ++ - Apps für die Win32-Plattform. Wir werden bald auf Linux portieren und dann vielleicht mehr (32 und 64 Bit für beide).

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

Es ist mir nicht der beste praktische Weg, 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 nach Bedarf.

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

    
Tim 02.10.2009, 20:26
quelle

4 Antworten

5

Wir verwenden Hudson, um C / C ++ - (GNU C, GNU C ++, Watcom C) Builds für mehrere Betriebssysteme zu verwalten. Für uns ist Software für Linux, Linux x64, QNX 4 und QNX6 gebaut. Die Art, wie wir es einrichten, ist:

  • 1 x VM für den Hudson-Server unter Windows
  • 4 x VMs, eine für jeden Slave-Typ, also habe ich 4 Hudson-Slaves - jeweils 1 für QNX4, QNX6 und Linux 32 und Linux 64. Alle laufen auf demselben Server, genau wie verschiedene VMs und wir habe keine Probleme gehabt. Wir bauen etwa 100 Projekte auf, die zu gleichen Teilen auf die vier Systemtypen aufgeteilt 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, das hilft.

    
Sagar 07.06.2010, 18:41
quelle
2

Ich habe nie Hudson für C ++ benutzt, aber für das, was Sie vorhaben, könnte es sinnvoll sein, sich die VMWare plugin und 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 machen 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.

    
sal 02.10.2009 21:12
quelle
2

Ich habe vor ein paar Jahren mit Hudson in einem Multiple-Platform-Szenario 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 glaube, 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 haben wollen, die auf derselben physischen Maschine aufbauen, dann brauchen Sie meiner Meinung nach eine sehr leistungsfähige Maschine. C ++ - Kompilierung benötigt ziemlich viel Ressourcen und, IIRC, wenn Hudson einen Build startet, startet es auf allen Plattformen zur gleichen Zeit.

    
sbi 02.10.2009 21:29
quelle
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.

    
William Leara 08.06.2010 19:53
quelle