8
votes

Comment utiliser Hudson lors de la construction de plusieurs plates-formes

À l'heure actuelle, nous construisons plusieurs applications C ++ pour la plate-forme Win32. Nous allons bientôt porter à Linux, puis peut-être plus (32 et 64 bits pour les deux).

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

Ce n'est pas clair pour moi le meilleur moyen pratique de le faire.

Idéalement, je veux juste une case avec un groupe de VMS exécutant Hudson, puis il commence à démarrer ses constructions au besoin.

Y a-t-il une ressource que quelqu'un peut me signaler pour cela?


0 commentaires

4 Réponses :


2
votes

Je n'ai jamais utilisé Hudson pour C ++, mais pour ce que vous envisagez de faire, il pourrait être judicieux de regarder le Plugin VMware et voyez s'il fera ce que vous voulez. Je recommanderais d'avoir seulement un seul maître Hudson si possible. Ce que vous voulez probablement faire est de configurer une image de machine VMware avec un processus d'esclave Hudson pour chaque environnement cible, puis reproduit une construction dans cet esclave.


1 commentaires

C'est l'objectif idéal, mais je ne suis pas sûr de la pratique. Je dois juste jouer avec ça je suppose.



2
votes

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

Cependant, si vous voulez avoir plusieurs machines de construction virtuelles sur la même machine physique, je pense que vous auriez besoin d'une machine très puissante pour cela. La compilation C ++ prend une quantité de ressources et, IIRC, lorsque Hudson commence une construction, elle le démarre sur toutes les plates-formes en même temps.


3 commentaires

YEP - Je me rends compte que nous devrons avoir plusieurs machines et, dans ce cas, il peut être plus simple d'avoir simplement Hudson en cours d'exécution sur chaque plate-forme, bien que cela soit stupide. Idéalement, je veux que le seul serveur Hudson déclenche chaque esclave. Je suppose que je dois juste mordre la balle et acheter du matériel supplémentaire.


Tim, vous avez juste besoin un Hudson Server, pas un pour chaque plate-forme. Mais vous aurez besoin d'un esclave de construction par plateforme. 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 VMS sur la même machine physique.


Il est assez important de comprendre que vous n'avez jamais * besoin de 1 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)



5
votes

Nous utilisons Hudson pour gérer C / C ++ (GNU C, GNU C ++, Watcom C) construit pour plusieurs OSS. Pour nous, le logiciel est construit pour Linux, Linux X64, QNX 4 et QNX6. La façon dont nous l'avons installé est:

  • 1 x VM pour le serveur Hudson, exécutant Windows
  • 4 x VMS, un pour chaque type 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 VMS différents, et nous n'ont pas fait face à aucun problème. Nous construisons environ 100 projets, divisés presque également entre les 4 types de systèmes.

    Vous ne devez pas nécessiter de matériel supplémentaire. Il existe un plugin Hudson qui fonctionne avec VMware VMS, pour les démarrer et les éteindre au besoin.

    J'espère que cela aide.


3 commentaires

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


Vous avez des conseils pour la configuration de l'inverse. Le système actuel est Linux et d'autres constructions doivent être exécutées sous Windows.


C'est tout aussi facile. Je viens de déplacer mon serveur Hudson à Linux et l'utiliser pour gérer toutes mes esclaves de construction. Hudson peut contrôler les esclaves Windows à l'aide du service Windows. Lorsque vous l'avez configuré pour utiliser de nouveaux nœuds (esclaves), vous avez la possibilité de choisir comment connecter l'esclave. Il suffit de choisir "Windows Service". C'est assez simple.



1
votes

Notez qu'il ne faut pas y avoir de relation entre le serveur qui exécute Hudson et les machines esclaves qui construisent vos applications de logiciels. En raison de la magie de Java, vous pouvez connecter les machines esclaves disparates au maître à l'aide de JNLP. (un exemple) Donc, qu'ils soient des machines physiques ou virtuelles, vous pouvez avoir une fenêtre en cours d'exécution, une autre Linux; un 32 bits, un autre 64 bits; etc - Quelles que soient vos applications exigent. Tant qu'ils disposent tous de la JRE installé, ils peuvent se connecter au maître Hudson et signaler le statut des constructions.


0 commentaires