43 votes

Meilleure pratique pour la mise en place d'un serveur de construction automatisé pour les applications iPhone ?

Je cherche à mettre en place un serveur de construction nocturne automatisé pour nos applications iphone, et je cherche des conseils sur ce qui fonctionne et ce qui ne fonctionne pas.

En gros, quelque chose qui, au moins une fois par nuit, exécute tous les tests unitaires et publie une nouvelle construction adhoc sur notre site Web interne.

Tous les développeurs utilisent des ordinateurs portables (qui seront éteints pendant la nuit). J'envisage donc d'acquérir un Mac Mini dédié à cette tâche.

Je ne sais pas si je dois prendre le Mac OS X standard ou l'édition serveur.

Au moins pour la première tentative, j'envisage d'utiliser un simple shell script exécuté à partir d'une crontab pour faire le travail réel. Dans le futur, un serveur d'intégration continue complet (hudson etc) serait bien.

J'ai déjà trouvé quelques articles en cherchant, mais ils sont assez brefs :

http://nachbaur.com/blog/how-to-automate-your-iphone-app-builds-with-hudson

http://blog.jeffreyfredrick.com/2008/11/27/continuous-integration-for-iphonexcode-projects/

Cette question de stackoverflow contient également des informations utiles sur le logiciel (bien qu'elle date de deux ans maintenant) :

http://stackoverflow.com/questions/212999/continuous-integration-for-xcode-projects

Tout conseil que les gens peuvent donner sur la façon dont ils ont configuré un serveur de construction et sur les problèmes potentiels serait grandement apprécié.

Gracias.

Joseph

14voto

leander Points 6363

Hudson n'est vraiment pas difficile à mettre en place ; c'est ce que nous utilisons en interne. Nous n'exécutons pas seulement des constructions pour iphone à partir de ce système - en fait, il n'y a qu'un seul mac mini configuré pour les constructions pour iphone, et c'est un ajout relativement récent. Nous avons une demi-douzaine d'autres esclaves sur lui pour d'autres plateformes différentes depuis un certain temps.

Vous pouvez l'essayer en cliquant sur le lien "Test Drive" de la page d'accueil. Rencontre avec Hudson pour vous faire une idée de la facilité de mise en place. (C'est l'une des choses qui m'ont convaincu ; il était vraiment facile à utiliser au départ, tout en étant configurable, extensible et suffisamment puissant pour nous permettre de nous développer au cours des dernières années. Il a remplacé un tas de scripts et de programmes roulés à la main que, bien qu'en étant l'auteur, j'ai été très heureux de voir mis au rancart).

Le backend hudson fonctionne sur un serveur Mac OSX très puissant, mais il n'y a aucune raison pour que vous ne puissiez pas le faire fonctionner à peu près partout (linux, Windows, mac).

Quant à la configuration pour la construction -- c'est environ 6 lignes de script dans la configuration du projet, principalement en appelant xcodebuild et le faire passer -project y -configuration arguments.

Exemple :

cd ${WORKSPACE}/Engineering/

set -e
set -v

xcodebuild -project foo.xcodeproj -alltargets -configuration Distribution clean
xcodebuild -project foo.xcodeproj -alltargets -configuration Release clean
xcodebuild -project foo.xcodeproj -alltargets -configuration Debug clean

xcodebuild -project foo.xcodeproj -alltargets -configuration Distribution
xcodebuild -project foo.xcodeproj -alltargets -configuration Release
xcodebuild -project foo.xcodeproj -alltargets -configuration Debug

Nous n'avons pas encore configuré l'esclave pour qu'il fonctionne comme un service - c'est sur la liste des tâches à faire. Pour l'instant, nous le lançons simplement via JNLP lorsque nous redémarrons le mini sur lequel il se trouve.

Le dépôt est SVN, et le maître hudson se charge de se souvenir des informations d'authentification https pour nous.

Nous utilisons activement le Email-ext ainsi qu'un plugin de délai de construction et un plugin de piste d'audit, étant donné que beaucoup d'autres personnes utilisent le système et que certaines constructions ne se comportent pas bien. Nous avons expérimenté brièvement avec le Avertissements et Plugins d'analyse de code statique Nous avons également besoin de les utiliser sur davantage de projets (nous avons généralement des avertissements en tant qu'erreurs dans les constructions, mais nous utilisons PC-Lint et d'autres outils sur certains projets ; avoir des résultats agrégés et suivis ici est très agréable). Enfin, le très important Chuck Norris y Emotional Hudson plugins.

Actuellement, nous n'exécutons pas de tests unitaires (honte !) sur aucune des constructions pour iPhone, et nous utilisons simplement la fonctionnalité ordinaire "Archive the Artifacts" intégrée à hudson pour stocker les constructions. Ceux-ci sont accessibles aux utilisateurs autorisés via l'interface web de hudson. Je ne doute pas qu'il ne vous sera pas difficile d'exécuter vos tests unitaires au sein du framework.

</fanboy>

Nos seuls vrais problèmes ont été liés à l'AFP et au SMB sur le Mac Mini - rien à voir avec Hudson, plutôt avec notre infrastructure réseau interne. Et le mini est un peu lent à mon goût - nous utilisons généralement des esclaves de construction assez puissants en partant du principe qu'une rotation rapide de la construction automatique est une bonne chose. Le mini sera peut-être doté d'un SSD pour cette raison à un moment donné.

6voto

Je réalise que cela fait un moment que ce fil de discussion n'a pas été mis à jour, mais je suis tombé sur un nouveau serveur d'intégration continue (CI) depuis. En fait, il n'est pas nouveau, mais son support intégré pour les builds Mac/IOS est nouveau :)

C'est le produit TeamCity de JetBrains disponible à l'adresse suivante http://www.jetbrains.com/teamcity/

Nous l'utilisons avec succès chez le client pour lequel je travaille pour construire des projets Java, mais nous allons également opter pour une configuration pour les constructions IOS, car cela devient une partie plus importante de notre gamme de produits.

Il est assez facile à configurer et peut fonctionner sur n'importe quelle plateforme, mais le buildagent doit fonctionner sur un ordinateur Mac.

J'espère que cela vous aidera :)

0voto

JosephH Points 21074

Une nouvelle option est Xcode 5 combiné avec Mac OS X 10.9 (Mavericks) et OS X Server. OS X Server a maintenant un composant serveur Xcode qui est bon pour exécuter des tests automatisés.

Il peut le faire :

  1. Construction (+vérification des avertissements)
  2. Analyser (par exemple, analyse statique de clang)
  3. Exécuter les tests sur le simulateur iOS + tous les appareils qui y sont connectés par USB

Pour l'exécution de tests sur des appareils, il bat de loin Jenkins/Hudson pour la simplicité et la facilité de configuration. Cependant, le serveur Xcode (à partir de Xcode 5.1) n'est absolument pas personnalisable - si vous voulez ajouter des graphiques personnalisés sur les performances, l'utilisation de la mémoire ou autre, vous ne pouvez pas le faire - pour ce genre de puissance, jenkins/Hudson sont bien meilleurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X