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é.