Serveur de compilation ?

AliGatorAliGator Membre, Modérateur
06:18 modifié dans Xcode et Developer Tools #1
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 ;)

Réponses

  • CéroceCéroce Membre, Modérateur
    06:18 modifié #2
    Je sais que c'est possible (Xcode > Preferences > Distributed Builds), mais je n'ai jamais essayé (pas encore assez riche pour disposer de deux machines, mais c'est pour bientôt).
  • AliGatorAliGator Membre, Modérateur
    06:18 modifié #3
    Bah justement, je crois que c'est pour faire l'inverse, ça, "Distributed Builds" !

    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 :D) 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...
  • MalaMala Membre, Modérateur
    06:18 modifié #4
    A vu de nez comme ça, moi je me connecterais en ssh au Mac distant. Et après, via la fenêtre de terminal, j'utilise xcodebuild pour lancer une compilation du dit projet.

    Maintenant, je sais pas ce que ça vaut en multi-utilisateurs.
  • CéroceCéroce Membre, Modérateur
    06:18 modifié #5
    Ah, effectivement.
    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).
  • LexxisLexxis Membre
    06:18 modifié #6
    Peut être qu'en fait la distribution de compilation pourrait t'apporter la solution. Il 'suffirait' de ne déclarer qu'un seul serveur de compilation... le Mac Mini. Du moins je penses que cela pourrait être possible si j'ai bien lu ce site :
    http://code.google.com/p/distcc/ surtout la dernière partie grâce au "pump mode".
    Voila.
  • stracolstracol Membre
    06:18 modifié #7
    Bonjour,

    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
Connectez-vous ou Inscrivez-vous pour répondre.