2009-10-02 9 views
8

Actuellement, nous construisons un certain nombre d'applications C++ pour la plate-forme Win32. Nous allons bientôt porter vers Linux et peut-être plus (32 et 64 bits pour les deux).Comment utiliser hudson lors de la construction pour plusieurs plates-formes

Quelle est la pratique standard, utilisez-vous plusieurs serveurs hudson chacun sur leur propre plate-forme pour faire une construction, ou le service hudson crée-t-il des machines virtuelles et construit-il?

Ce n'est pas clair pour moi la meilleure façon pratique de le faire.

Idéalement, je veux juste une boîte avec un tas de machines virtuelles exécutant hudson, puis il démarre des builds au besoin.

Existe-t-il une ressource à laquelle quelqu'un peut me signaler?

Répondre

5

Nous utilisons Hudson pour gérer les constructions C/C++ (GNU C, GNU C++, Watcom C) pour plusieurs systèmes d'exploitation. Pour nous, le logiciel est construit pour Linux, Linux x64, QNX 4 et QNX6. La façon dont nous avons mis en place est:

  • 1 x VM pour le serveur Hudson, exécutant Windows
  • 4 x machines virtuelles, un pour chaque type d'esclave, donc j'ai 4 esclaves Hudson - 1 chacun pour QNX4, QNX6 et Linux 32 et Linux 64. Tous fonctionnent sur le même serveur, tout comme les différentes machines virtuelles, et nous n'avons rencontré aucun problème. Nous construisons environ 100 projets, répartis presque également entre les 4 types de systèmes.

Vous ne devriez pas avoir besoin de matériel supplémentaire. Il existe un plugin Hudson qui fonctionne avec les machines virtuelles VMWare, pour les démarrer et les fermer au besoin.

J'espère que cela aide.

+0

Merci - cela semble aussi une bonne mise en place pour nous. – Tim

+0

J'ai mis en place notre système à partir de zéro, donc je sais que cela prend du temps, mais ce n'est pas difficile. Je viens de me rendre compte que votre question a été postée l'année dernière. Avez-vous eu quelque chose en cours d'exécution? – Sagar

+1

vous avez des conseils pour la mise en place de l'inverse. Le système actuel est Linux, et les autres versions doivent être exécutées sous Windows. – myusuf3

2

Je n'ai jamais utilisé hudson pour C++ mais pour ce que vous avez l'intention de faire, il serait logique de regarder le VMWare plugin et de voir s'il fera ce que vous voulez. Je recommanderais d'avoir un seul maître Hudson si possible. Ce que vous voulez probablement, c'est configurer une image de machine VMWare avec un processus Hudson Slave pour chaque environnement cible, puis générer une construction dans cet esclave.

+0

C'est l'objectif idéal, mais je ne sais pas si c'est pratique. Je dois juste jouer avec ça je suppose. – Tim

2

J'ai joué avec hudson dans un scénario de plate-forme multiple il y a un peu plus d'un an. J'avais un serveur hudson (qui était ridiculement facile à installer) sur une machine et des esclaves de construction séparés pour chacune des plates-formes. Je me souviens que pendant un moment l'un des clients de build était dans une VirtualBox sur la machine qui hébergeait le serveur hudson. (Je pense que j'ai eu le serveur sur une VM pendant un moment, aussi.) Je ne me souviens pas qu'il y ait un problème de principe avec cette configuration.

Cependant, si vous voulez avoir plusieurs machines de construction virtuelles construites sur la même machine physique, je pense que vous aurez besoin d'une machine très puissante pour cela. La compilation en C++ nécessite beaucoup de ressources et, IIRC, quand hudson démarre une build, il la lance sur toutes les plateformes en même temps.

+0

Yep - Je me rends compte que nous devrons peut-être avoir plusieurs machines et dans ce cas, il peut être plus simple d'avoir hudson sur chaque plateforme, même si c'est idiot. Idéalement, je veux que le serveur hudson déclenche chaque esclave. Je suppose que je dois juste mordre la balle et acheter du matériel supplémentaire. – Tim

+1

Tim, vous avez juste besoin du serveur _one_ hudson, pas un pour chaque plate-forme. Mais vous aurez besoin d'un esclave de construction par plate-forme. Vous pouvez tester cela avec des machines virtuelles jusqu'à ce que vous pensiez que cela fonctionne, mais à la fin, vous ne pourrez probablement pas profiter de CI si vous construisez trois plates-formes dans des machines virtuelles sur la même machine physique. – sbi

+2

Il est assez important de comprendre que vous avez seulement besoin d'un serveur hudson. Vous pouvez faire tout le reste avec des esclaves installés sur des architectures appropriées. (* pour des interprétations raisonnables de tous les temps) –

1

Notez qu'il n'y a pas nécessairement de relation entre le serveur qui exécute Hudson et les machines esclaves qui construisent vos applications logicielles. En raison de la magie de Java, vous pouvez connecter les machines esclaves disparates au maître en utilisant JNLP. (un exemple) Donc, qu'il s'agisse de machines physiques ou virtuelles, vous pouvez en avoir une sous Windows, une autre sur Linux; un 32 bits, un autre 64 bits; etc - quelles que soient vos applications. Tant qu'ils ont tous le JRE installé, ils peuvent se connecter au maître Hudson et signaler l'état des builds.