21

Je suis actuellement à la recherche d'une bonne configuration pour un serveur d'intégration continue qui permettrait de construire diverses applications C++ pour plusieurs distributions Linux.Serveur d'intégration continue pour C++ - Qu'en est-il des dépendances de bibliothèque?

Ma première question est de savoir comment les autres utilisateurs ont géré les différences entre les bibliothèques système entre les distributions Linux? Bien qu'il soit relativement facile de créer des dépendances directes, telles que des bibliothèques d'interface utilisateur, avec une application, les dépendances "indirectes" telles que la glibc semblent être très pénibles si elles devaient être construites à côté de l'application à chaque fois. Je pense donc à déplacer l'exécution réelle de construction dans une machine virtuelle distincte pour chaque distribution, par ex. en utilisant rlogin pour exécuter les commandes. Mon but est d'empêcher les incompatibilités binaires entre les versions de la bibliothèque de la machine de construction et celles qui sont déployées dans les distributions cibles.

Est-ce que quelqu'un ici a une expérience avec un tel processus et pourrait dire si ce qui précède semble être une approche réalisable?

+0

Je voudrais voir une bonne réponse à cette question. En plus de la question originale, j'aimerais savoir comment je peux compiler pour mingw sur Linux aussi (j'utilise mingw sous Windows). En outre, j'utilise le framework Qt et QTestLib pour les tests unitaires. Merci! –

+0

Je voudrais aussi voir une bonne réponse à cette question.À mon humble avis, cela va à des problèmes de "gestion de la configuration" que chaque module "se couple" à d'autres modules, et en liant un lib, cela signifie que vous devez implicitement lier les bibliothèques up-stream. Comme cela nécessite des limitations de version-lib, ce problème se complique rapidement (par exemple, DLL-hell, ou RPM-hell). La propagation par dépendance indirecte est essentielle, dans le contexte des versions compatibles bornées. – charley

Répondre

4

Buildbot a la notion de buildmasters and buildslaves.

Un buildmaster se charge d'afficher l'interface web, l'envoi d'e-mail, le déclenchement construit, et d'autres ménage. Les buildslaves attendent sur le buildmaster et quand commandé commandent des builds.

Nous avons buildbot mis en place pour construire un certain nombre de plates-formes différentes, certains d'entre eux des machines virtuelles, et cela fonctionne bien pour nous.

6

Nous utilisons Jenkins (Intégration contiguë) et CMake (build system) à cette fin. Jenkins est similaire à Buildbot, c'est-à-dire qu'il a aussi buildmaster et buildslaves. Actuellement, j'ai configuré 8 esclaves pour construire pour 4 plates-formes différentes (FC8, FC10, FC12 et Windows 7). Nous construisons à la fois des binaires de débogage et de relâchement, donc j'ai dédié un esclave pour chaque plate-forme et type de construction. En ce qui concerne les bibliothèques tierces comme Qt & Boost, je les ai compilées sur chaque plate-forme et les ai vérifiées dans un référentiel séparé.

@esavard: Nous utilisons CMake 2.8 pour faire la compilation croisée, je n'ai pas utilisé minigw mais une recherche rapide Google indique qu'il est possible. Voici a link pour un tutoriel à compiler pour Windows sur Linux en utilisant CMake et miniGW.

Je ne l'ai pas utilisé Buildbot et ne peut pas commenter ses caractéristiques, mais pensé que je devrais mentionner une alternative que nous utilisons actuellement.

Espérons que cela aide.

+0

+1 pour CMake ... – Macke

+0

Pensez-vous que je pourrais réaliser quelque chose de similaire en utilisant qmake au lieu de CMake (nous utilisons qmake en ce moment et nous utilisions Scons avant cela)? –

+0

Je n'ai pas utilisé qmake, donc je ne peux pas dire avec certitude comment cela fonctionnerait. [Ici] (http://silmor.de/29) est un lien qui parle de cross compilation des applications Qt pour Windows sur Linux avec qmake. Scons est aussi très bon, je l'ai essayé avant d'opter pour CMake. Nous sommes allés avec CMake en raison de sa prise en charge de plusieurs IDE Nous avons des gens qui utilisent Eclipse, Code :: Blocks, VS05, VS10 et Emacs. Seuls les problèmes rencontrés concernaient la prise en charge des en-têtes précompilés avec CMake. – user258808

0

Certainement, buildbot et de nombreuses machines virtuelles sont la solution. Nous avons VMWare ESX serveur hébergeant de nombreux esclaves de construction qui, au lendemain de compiler notre application. L'application est ensuite testée sur une autre machine virtuelle (pas l'esclave de construction et ayant juste une installation de système d'exploitation par défaut) pour vérifier que cela fonctionne et que toutes les dépendances sont empaquetées.

La belle chose que je voudrais faire est la phase de l'exécution de test une étape automatisée mais je n'ai pas donné le temps de le faire encore.

Questions connexes