Après avoir utilisé Hudson pour une intégration continue avec un projet précédent, je souhaite configurer un serveur d'intégration continue pour les projets iPhone sur lesquels je travaille actuellement. Après des recherches, il semble qu’il n’y ait aucun moteur CI spécialement conçu pour Xcode, mais un gars a eu du succès en utilisant Cruise Control combiné avec l’outil CLI de xcodebuild . Quelqu'un at-il ici essayé? Existe-t-il des moteurs de CI qui fonctionnent bien avec les projets Xcode?
Je vais probablement essayer Cruise Control. Je posterai une réponse avec mes conclusions.
J'utilise avec succès Hudson sur Mac avec xcodebuild. Avec la sortie du sdk pour iPhone 3.0, vous avez le contrôle sur la cible, la configuration et le sdk sur lesquels le projet doit être construit.
C'est aussi simple que de créer une étape de construction dans hudson et d'indiquer à xcodebuild de construire le projet:
xcodebuild -target "myAppAppStore" -configuration "DistributionAppStore" -sdk iphoneos2.1
Le travail initial a porté ses fruits pour moi, car mes versions fonctionnent sans aucune pensée supplémentaire. J'ai écrit une description détaillée sur mon blog si quelqu'un est intéressé.
Ressusciter ce fil. Je n'ai pas trouvé de solution satisfaisante pour obtenir des versions XCode automatisées avec des tests unitaires sur un serveur de génération. J'ai donc effectué des recherches et codé. Le résultat est cet article de blog expliquant tout et ce script Ruby qui convertit la sortie OCUnit de xcodebuild au format XML que JUnit utilise pour les rapports de test. Le serveur de construction que j'ai choisi était Hudson .
Mise à jour 3/2 2012: j'ai mis à jour cette fonctionnalité pour utiliser des scripts Shell personnalisés pour la construction et l'exécution. Disponible ici . C'est bon non seulement pour l'intégration continue, mais aussi pour construire à partir d'une ligne de commande sur votre propre machine.
Apple vient de publier (le 10 juin 2013) pour OSX Mavericks (OS X 10.9) une nouvelle plate-forme d’intégration continue qui est la solution d’intégration continue la plus intégrée que j’ai jamais vue auparavant. , ici dans cette page a les détails:
Je recommande de voir la présentation de wwdc 2013 sur le sujet.
Adium utilise buildbot avec Xcode assez efficacement. Nous avons écrit un fichier makefile simple qui appelle xcodebuild avec les cibles et les configurations appropriées, mais je suis sûr que c'est optionnel.
J'ai utilisé CruiseControl avec Xcode (similaire à ce que Pragmatic Automation a suggéré) et j'ai eu un succès raisonnable. Je connais aussi très bien CruiseControl et sa configuration de format de configuration relativement horrible.
J'ai également utilisé à bon escient BuildBot, mais j'ai constaté que ses atouts ne correspondaient pas vraiment à mes besoins (création d'esclaves distribués et génération de rapports sur plusieurs systèmes différents). Configurer les configurations de buildbot peut être un art en soi, bien que ce ne soit pas difficile. Il s’agit essentiellement d’écrire des scripts en python.
Depuis que Hudson est disponible, je le recommanderais comme une avenue pour une intégration continue. Il possède une interface Web (le principal défaut de CruiseControl dans mon esprit) et est très flexible dans les divers systèmes qu’il prend en charge. Vous pouvez invoquer des constructions pilotées par ligne de commande assez facilement et de manière très évidente. Cela dit, je n'ai pas configuré d'instance utilisant Hudson et Xcode, contrairement aux autres systèmes. C'est donc en partie une spéculation de ma part.
Je pense que vous devriez toujours pouvoir utiliser Hudson. Hudson est très flexible et vous permet également d’utiliser des scripts Shell pour créer: Scripts Shell et commandes batch Windows
Il suffit d’y entrer xcodebuild. Jetez un coup d’œil à la page de manuel xcodebuild pour voir les options de xcodebuild.
Si cela ne vous dérange pas de vivre à la fine pointe, je viens de commettre un constructeur de xcode pour CruiseControl.
Jenkins semble bien fonctionner pour certaines personnes. (Bien que je n’aie jamais utilisé de serveur CI auparavant.)
Jenkins fonctionne bien. Vous pouvez construire votre projet xcode en écrivant votre propre script Shell, puis laisser Jenkins l’exécuter, ou vous pouvez également utiliser le plugin xcode.
Mais vous devez être conscient du problème de l'autorité. Avec de petites modifications dans les configurations Jenkins, vous pourrez gérer votre serveur CI en très peu de temps.