iphone - parental - itunes




Meilleure pratique pour configurer un serveur de génération automatique pour les applications iPhone? (2)

Je cherche à installer un serveur de compilation nocturne automatisé pour nos applications iPhone, et à la recherche de conseils sur ce qui fonctionne et ce qui ne fonctionne pas.

Fondamentalement, quelque chose qui au moins tous les soirs exécute tous les tests unitaires et publie une nouvelle version adhoc à notre site Web interne.

Tous les développeurs utilisent des ordinateurs portables (qui seront éteints pendant la nuit), donc je pense avoir un Mac Mini dédié pour le faire.

Je ne suis pas sûr si je devrais obtenir Mac OS X standard ou l'édition de serveur.

Au moins pour la première tentative, je considère juste en utilisant un script shell simple exécuté à partir d'un crontab pour faire le travail réel. À l'avenir, un serveur d'intégration continue complet (hudson etc) serait bon.

J'ai déjà trouvé quelques articles à travers la recherche, bien qu'ils soient 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/

et aussi cette question de stackoverflow a quelques informations de logiciel utiles (bien que cela ait deux ans maintenant):

Intégration continue pour les projets Xcode?

Tout guide que les gens peuvent donner sur la façon dont ils ont configuré un serveur de build et tous les problèmes potentiels seraient grandement appréciés.

Merci!

Joseph


Hudson (ou sa fourche Jenkins ) n'est vraiment pas difficile à mettre en place; c'est ce que nous utilisons en interne. Nous ne faisons pas que construire des iphone - en fait, il n'y a qu'un seul mini-mac pour les builds iphone, et c'est un ajout relativement récent. Nous avons eu une demi-douzaine d'autres esclaves pour d'autres plates-formes différentes pendant un certain temps.

Vous pouvez jouer avec le lien "Test Drive" sur la page Meet Hudson pour avoir une idée de la facilité de configuration. (C'est une des choses qui m'a vendu, c'était vraiment facile à démarrer, mais toujours configurable, extensible et assez puissant pour nous permettre de nous développer au cours des dernières années. J'ai roulé des scripts et des programmes qui, en dépit d'être l'auteur de, j'étais très heureux de voir reposés.)

Nous avons le backend hudson fonctionnant sur un serveur Mac OSX costaud, mais il n'y a aucune raison que vous ne puissiez pas l'exécuter à peu près partout (linux, windows, mac).

En ce qui concerne la configuration pour la construction - il s'agit d'environ 6 lignes de script shell dans la configuration du projet, en appelant pour la plupart xcodebuild et en lui passant -configuration arguments -project et -configuration .

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 en tant que service - ceci est sur la liste TODO. Pour l'instant, nous le lançons simplement via JNLP chaque fois que nous redémarrons le mini c'est sur.

Repository est SVN, et le maître hudson prend soin de se souvenir des informations d'authentification https pour nous.

Nous utilisons activement le plugin Email-ext , et nous avons un plugin timeout et un plugin d'audit trail car il y a beaucoup d'autres personnes qui utilisent le système et certaines builds ne sont pas très correctes. Nous avons expérimenté brièvement avec le plugin Warnings et les plugins Static Code Analysis, nous avons besoin de ceux utilisés sur plus de projets (nous avons généralement des avertissements comme des erreurs dans les builds, mais nous utilisons PC-Lint et d'autres outils sur certains projets; sortie agrégée et suivie ici est très agréable). Enfin les plugins Chuck Norris et Emotional Hudson .

Nous ne sommes actuellement pas en train d'exécuter des tests unitaires (honte!) Sur les builds de l'iphone, et nous utilisons simplement la fonctionnalité ordinaire "Archive the Artifacts" intégrée dans hudson pour stocker les builds. Ceux-ci peuvent être consultés via les utilisateurs autorisés via l'interface Web hudson. Je n'ai aucun doute que ce ne serait pas difficile pour vous d'exécuter vos tests unitaires dans le cadre.

</ fanboy>

Nos seuls vrais problèmes ont dû faire avec AFP et SMB sur le mac mini - rien à voir avec hudson du tout, plus juste notre infrastructure de réseau interne. Et le mini est un peu lent à mon goût - nous exécutons habituellement des esclaves de construction assez costauds selon la théorie selon laquelle le redressement rapide par autobuild est une bonne chose. Le mini peut être doué d'un SSD pour cette raison à un moment donné.


Je me rends compte que cela fait un moment que ce thread a été mis à jour pour la dernière fois, mais j'ai rencontré un nouveau serveur d'intégration continue (CI) depuis lors. Ou en fait ce n'est pas nouveau, mais son support intégré pour les builds Mac / IOS est nouveau :)

C'est le produit TeamCity de JetBrains disponible sur http://www.jetbrains.com/teamcity/

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

Il est assez facile à configurer et peut fonctionner sur n'importe quelle plate-forme, mais le buildagent doit exécuter un ordinateur Mac.

J'espère que cela t'aides :)





automated-tests