Serveur de Build / intégration continue recommandation pour C++ / Qt projets
Je suis à la recherche de mettre en œuvre un serveur de build pour Qt C++ basées sur des projets. Le serveur doit vérifier le code nécessaire à l'actif de la Subversion, de construire les fichiers exécutables, de réunir les éléments pour l'installation de projets, et de construire l'installation des fichiers multimédia. Les plateformes cibles et (rugueux) toolchains sont:
- Windows (32 - et 64-bits): qmake, nmake, msbuild, wix de la chaîne. Le résultat final est un programme d'installation d'EXE et de l'image du DVD.
- Mac OS X: qmake, make custom scripts bash pour assembler paquet. Le résultat final est un bundle d'application à l'intérieur d'une image de disque et un DVD de l'image.
- Ubuntu (32 - et 64-bits): qmake, make, debuild basés sur des scripts. Le résultat final est une collection de fichiers DEB et d'une image de DVD.
- Fedora (32 - et 64-bits): qmake, make, rpmbuild basés sur des scripts. Le résultat final est une collection de fichiers RPM et une image de DVD.
De sorte que c'est au moins 4 agents de build (peut-être plus si 32 - et 64-bits ne peut pas être fait sur la même case) et 7 configurations. Les projets Open-source sont privilégiées, mais ce n'est pas une exigence absolue.
La plupart des outils que je vois semblent être pris en charge à Java (Jenkins, CruiseControl, etc.) ou .Net (CruiseControl.net, etc.) Ceux qui être utilisé avec un C++ de la chaîne, ou vais-je être constamment se battre contre le système? Tout ce que vous avez utilisés dans le passé et a trouvé fonctionne bien avec Qt /C++?
- double possible de Ce que l'outil d'intégration continue est le meilleur pour un projet C++?
- Je n'arrivais pas à en trouver un pour mon (même) les besoins, alors j'ai commencé à développer mon propre. Je vais garder un oeil sur cette question dans le cas où quelque chose d'intéressant, est proposé.
Vous devez vous connecter pour publier un commentaire.
- Je utiliser Jenkins pour la construction et l'emballage de nombreux projets C++, basé sur qmake, cmake, et les fichiers makefile.
Il y a les plugins pour cmake, qmake, et msbuild, mais toutes les lignes de commande des scripts peuvent être exécutés en tant que bien.
J'ai fait de l'emballage à l'aide de Jenkins avec pas de problèmes, que c'est juste une autre ligne de commande de l'étape dans un projet.
Il y a de bons plugins pour surveiller le nombre de avertissements/erreurs produit par le compilateur (j'ai l'habitude d'utiliser GCC).
Il a également construit la matrice qui vous permettent de construire un projet à plusieurs reprises avec différentes combinaisons de drapeaux du compilateur, pré-processeur de variables, plate-forme, etc. Un projet que j'ai mis en place est une matrice de construire avec 5 boolean préprocesseur drapeaux sur les deux plates-formes, qui ne puis 2^6=64 construit. Ceux-ci peuvent prendre un peu de réglage jusqu'à obtenir correct.
Ici vous pouvez lire un exemple rapide:
Intégration Continue Serveur Hudson
Je pense que d'Hudson, jenkins et builbot sont la peine d'essayer. Perdre un jour ou deux de l'évaluation et de les essayer avec un exemple rapide va vous aider à choisir en toute confiance.
Tout raisonnablement susceptible système CI aura une pièce qui va vous permettre d'exécuter n'importe quel programme que vous voulez pour votre commande de construction.
Voici ce que je considère:
Je l'ai fait ci-dessus à l'aide de CruiseControl et la plupart des choses ont été assez facile. J'ai écrit tout faire ou qmake et simplement appelé à la commande que j'avais besoin exécuté. Pour l'unité de test et de couverture de code, intégration, je sortie de trucs à XML et l'a transformé en quelque chose de soutenu par CruiseControl.
Ma recommandation, prendre un coup d'oeil à l'recommandée systèmes CI et les examiner, sur la base des critères ci-dessus.
Je suis en utilisant buildbot pour cela. Je l'ai utilisé pendant 4 ans, et je suis très heureux avec elle.
C'est une application écrite en python, qui s'exécute sur un serveur et peut gérer plusieurs clients sur les différents Systèmes d'exploitation. Je suis actuellement sous Windows XP, Windows 7, Debian, Ubuntu et CentOS construire des esclaves. Mes projets C++, et l'un d'eux (l'utilisateur final GUI) est fait en Python. Mais nous avons également intégré avec d'autres cadres, d'autres fonctionnalités que GUI.
Ce qui est vraiment bon sur buildbot, c'est qu'il fonctionne en exécutant les lignes de commande sur les esclaves. Avec cela, vous pouvez faire ce que vous voulez. Même sur les systèmes Windows pour compiler à l'aide de Visual Studio! À partir de ces lignes de commande, vous obtenez tous les résultats centralisés sur le serveur et accessible.
Vous pouvez également trouver des alternatives à ce site qui fait référence à beaucoup d'entre eux.
Avertissement: j'ai regardé il y a 3 ans, je ne sais pas si elle est toujours pertinente.
Hudson ou Jenkins est assez bonne.
Jenkins est en effet assez populaire pour le développement d'un tel service personnalisé, même après toutes ces années, considérant que la question est déjà de 7 ans.
Felgo offre également une Intégration Continue et de Livraison (CI/CD) service de l'intervalle Qt. Il prend en charge les plateformes de bureau ainsi que iOS, Android et cibles embarquées. L'ensemble des fonctionnalités est décrit dans la post de blog.
Disclaimer: je suis un développeur de logiciels à Felgo