39 votes

Timeout lors de l'exécution des tests xcodebuild sous Xcode 6 via SSH

Il semble que j'ai des problèmes avec l'intégration de Xcode6 avec jenkins, j'ai actuellement cette configuration et fonctionne avec Xcode 5.

Avec xcode 6 exécuté à distance via SSH, le simulateur se bloque, mais lorsque je l'exécute localement, il réussit.

Commande

xcodebuild -workspace PROJECTNAME.xcworkspace -scheme BGO_Tests -destination 'platform=iOS Simulator,name=iPhone 5s' -derivedDataPath ./Build clean test

2014-08-19 10:46:36.591 xcodebuild [33966:381f] iPhoneSimulator : Timed out attendant 120 secondes pour >simulateur pour démarrer, l'état actuel est 1.

Les tests ont échoué : La cible de test BGO_Tests a rencontré une erreur (elle a attendu 120 secondes pour que le simulateur démarre, l'état actuel est 1).

Testé avec le récent Xcode 6 beta 6

31voto

Michael Loo Points 1

----- EDIT

Suivi d'Apple concernant le bogue ID# 18001199 :

Le contexte fourni par LaunchDaemons n'est pas pris en charge pour l'exécution d'applications GUI en cours d'exécution. Le service SSH et la configuration par défaut de Jenkins sont tous deux sont tous deux implémentés en tant que LaunchDaemons. Dans les versions précédentes de Xcode 5 xcodebuild pouvait exécuter des tests sur le simulateur iOS dans ce contexte, mais cela n'a jamais été une configuration supportée, et comme vous l'avez noté cela ne fonctionne plus à partir de Xcode 6.

Contrairement aux démons de lancement, les agents de lancement fournissent un contexte dans lequel vous pouvez exécuter applications GUI - si l'utilisateur est connecté à ce moment-là, avec une fenêtre serveur / session Aqua. Convertir votre configuration Jenkins de d'un LaunchDaemon à un LaunchAgent permettrait d'éviter les problèmes signalés par les utilisateurs. problème signalé. Vous pouvez également utiliser launchd pour exécuter des tests sur le simulateur iOS iOS à partir d'une session SSH, soit en créant un LaunchAgent et en le chargeant manuellement, soit en utilisant "launchctl submit".

----- EDIT END

Ok, après avoir creusé un peu plus dans les commentaires ici (merci beaucoup à Opal ), j'ai découvert que le lancement de l'esclave via JNLP fonctionne à la place.

Comme de nombreuses personnes l'ont mentionné, il n'est actuellement pas possible d'exécuter le test unitaire via SSH. Il est donc préférable de se tourner vers l'agent JNLP pour le moment, jusqu'à ce qu'Apple corrige ce problème.


Si la connexion avec JNLP ne résout toujours pas le problème, essayez la solution mentionnée dans cet article. commentaire .

c.-à-d. : Exécutez-les en ligne de commande :

DevToolsSecurity -enable

sudo dscl . -append /Groups/_developer GroupMembership jenkins

sécurité authorizationdb write system.privilege.taskport is-developer

Références :

5voto

Tad Points 41

J'ai fini par résoudre ce problème sur Xcode 5 en en suivant les étapes ici , essentiellement en cours d'exécution :

sudo security authorizationdb write system.privilege.taskport allow

Cela éliminera une classe de ces popups d'authentification. Vous aurez également besoin d'exécuter :

sudo DevToolsSecurity --enable

Cependant, après la mise à jour vers Xcode 6, j'obtiens maintenant un blocage infini lorsque j'essaie d'exécuter les tests xcodebuild via SSH. Ils continuent à fonctionner correctement tant que je suis connecté à la console et que je les exécute au clavier.

3voto

Mark Points 21

J'ai rencontré le même problème. Ma théorie de travail est que SSH sous OSX est lancé en tant que LaunchDaemon, et que les LaunchDaemons ne sont pas autorisés à présenter une interface utilisateur (voir également https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/DesigningDaemons.html ).

J'ai pu contourner le problème en utilisant Java Web Start pour lancer l'esclave Jenkins. J'ai ensuite installé l'esclave Jenkins en tant que service launchd.

Malheureusement, l'esclave Jenkins s'installe ensuite en tant que -vous l'avez deviné- LaunchDaemon, ce qui entraîne exactement le même problème d'impossibilité de lancer les tests. (Voir aussi https://issues.jenkins-ci.org/browse/JENKINS-21237 )

J'ai résolu ce problème en déplaçant les fichiers plist et jar de Jenkins Slave LaunchDaemon de /System/Library/LaunchDaemons dans ~/Library/LaunchAgents, et en mettant à jour les chemins dans le fichier plist.

Cela m'a finalement permis d'exécuter des tests XCode6 (Beta6) sur un esclave jenkins OSX.

0voto

Michael Loo Points 1

J'ai vu cette erreur avant, une possibilité est que, puisque vous avez probablement téléchargé la bêta de Xcode6 depuis l'internet (pas l'appstore car elle n'est pas encore disponible), la machine sur laquelle vous essayez de l'exécuter affichera un pop up vous demandant si vous voulez vraiment ouvrir cette application car elle vient de l'internet.

La même chose se produit lorsque xcodebuild essaie de lancer l'application simulateur d'iPhone.

Vous pouvez essayer de partager l'écran avec la machine et cliquer sur "Ouvrir" dans cette fenêtre.

Si ça ne marche toujours pas, j'essaierais de le faire :

  1. Réinitialiser le contenu et les paramètres du simulateur
  2. Redémarrez la machine et assurez-vous qu'aucun simulateur n'est en cours d'exécution au démarrage (vous pouvez simplement choisir de ne rouvrir aucune application au redémarrage).

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