Serveur de compilation ?
AliGator
Membre, Modérateur
Bonjour à tous,
Je cherche à voir s'il y a des possibilités de faire de la compilation de projet / code Objective-C (iPhone pour être précis) centralisé sur un serveur ?
Un peu l'inverse de Xgrid dans un sens...
C'est à dire avoir plusieurs ordis sur lesquels on développe du code (des classes indépendantes, etc...) et quand on veut compiler et linker ce code, l'envoyer au serveur, qui va le compiler localement... puis retourner les éventuelles erreurs ensuite.
Le but c'est (oui je sais je vais me faire ) que des gens du projet puissent pisser du code sous Windows et l'envoyer à un MacMini faisant office de serveur de compilation justement... à défaut d'avoir 15 MacMinis en stock, un par personne...
Après je ne sais pas si c'est réalisable :
- sous forme vraiment d'un serveur de compilation (genre un réglage dans Xcode qui permet ce genre de truc, par exemple écouter un repository SVN et dès qu'il voit un commit, récupérer le code commité et mis à jour et rebuilder et faire un rapport de build ?),
- ou par voie détournée (hébergement du code source sur un disque réseau, chacun tape sur ses fichiers du disque réseau, et quand il a besoin de compiler envoie un signal au MacMini qui va lire les fichiers réseau et compiler ? (avec risque de collision read/write...)
- ou si la seule solution viable c'est de développer ses fichiers dans son coin, et quand on est prêt faire remonter (clé USB ou réseau) lesdits fichiers sur le Mac serveur, puis aller devant (ou via VNC) pour lancer la compilation... et le simulateur par exemple...
Bref, vos idées sur le sujet sont les bienvenues
Je cherche à voir s'il y a des possibilités de faire de la compilation de projet / code Objective-C (iPhone pour être précis) centralisé sur un serveur ?
Un peu l'inverse de Xgrid dans un sens...
C'est à dire avoir plusieurs ordis sur lesquels on développe du code (des classes indépendantes, etc...) et quand on veut compiler et linker ce code, l'envoyer au serveur, qui va le compiler localement... puis retourner les éventuelles erreurs ensuite.
Le but c'est (oui je sais je vais me faire ) que des gens du projet puissent pisser du code sous Windows et l'envoyer à un MacMini faisant office de serveur de compilation justement... à défaut d'avoir 15 MacMinis en stock, un par personne...
Après je ne sais pas si c'est réalisable :
- sous forme vraiment d'un serveur de compilation (genre un réglage dans Xcode qui permet ce genre de truc, par exemple écouter un repository SVN et dès qu'il voit un commit, récupérer le code commité et mis à jour et rebuilder et faire un rapport de build ?),
- ou par voie détournée (hébergement du code source sur un disque réseau, chacun tape sur ses fichiers du disque réseau, et quand il a besoin de compiler envoie un signal au MacMini qui va lire les fichiers réseau et compiler ? (avec risque de collision read/write...)
- ou si la seule solution viable c'est de développer ses fichiers dans son coin, et quand on est prêt faire remonter (clé USB ou réseau) lesdits fichiers sur le Mac serveur, puis aller devant (ou via VNC) pour lancer la compilation... et le simulateur par exemple...
Bref, vos idées sur le sujet sont les bienvenues
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Si j'ai tout suivi, "Distributed Builds" c'est pour utiliser dist-gcc pour pouvoir répartir la compilation de gros projets sur plusieurs machines, par exemple profiter que tu as 5 Macs à la maison (comme tout le monde bien sûr, hein, comme dirait Séguéla, si t'as pas 5 Macs à la maison... ^^) pour compiler 5 fois plus vite (enfin presque ) et répartir la compilation sur les processeurs des 5 machines.
Une machine où tu développes, N machines qui servent à compiler en parallèle pour builder plus vite.
Alors que moi je veux plusieurs machines où tu développes et tape ton code, et une seule machine qui compile. Non pas pour optimiser la compilation puisque là au contraire ça risque de ralentir le process de build... mais parce que justement nous non plus on n'est pas encore assez riche pour avoir 36 Macs, et que par contre y'a des PCs de dispos pour pisser du code dessus... donc chacun tape son code dans son coin (chacun sur son projet... ou chacun sur une partie d'un même projet, ça je m'en fiche), et quand il a besoin de le compiler (comme les frameworks du SDK 3.0 ne sont pas dispos sous Windows), il envoie ça à un Mac commun à tous qui se charge de compiler ce qu'on lui envoie...
Maintenant, je sais pas ce que ça vaut en multi-utilisateurs.
Tout le problème est alors d'aller cliquer sur le bouton Build depuis le PC ! La solution de Mala est probablement l'une des plus simples (c.à .d. qui fonctionne le mieux sur le long terme).
http://code.google.com/p/distcc/ surtout la dernière partie grâce au "pump mode".
Voila.
Je crois avoir mis en place ce que tu cherches.
Je suis dans une société où nous développons des softs à la fois sur MacOS et windows, et nous avions besoin d'une "buildfarm" pour builder sans nous gêner pendant le travail, de quoi générer des éxécutables à la demande pour le QA... etc...
Sous Windows, on utilise automated build studio.
Sous Mac, j'ai fait un set de scripts sh, commandés via quelques pages en php qui réalisent le tout (update svn, clean, compile via xcodebuild, tests unitaires, installeurs, dmg, upload ftp sur NAS local). Je suis en train de regarder du côté de cruise control qui semble pas mal (http://cruisecontrol.sourceforge.net/index.html).
Si il y a d'autres solutions Mac plus souples (en particulier pour reporter de manière plus élégante les erreurs/warning de compilation), je suis prenneur... :P